Ответ 1
Это не связано с вашей работой.
Меню переполнения реализовано PopupWindow. Когда пользователь прикасается, чтобы закрыть PopupWindow, событие ACTION_DOWN помещено в очередь для очереди сообщений. Затем он доставляется в класс ViewPostImeInputStage и, наконец, ViewPostImeInputStage отправляет это событие ввода в PopupWindow onTouchEvent.
@Override
public boolean onTouchEvent(MotionEvent event) {
final int x = (int) event.getX();
final int y = (int) event.getY();
if ((event.getAction() == MotionEvent.ACTION_DOWN)
&& ((x < 0) || (x >= getWidth()) || (y < 0) || (y >= getHeight()))) {
dismiss();
return true;
} else if (event.getAction() == MotionEvent.ACTION_OUTSIDE) {
dismiss();
return true;
} else {
return super.onTouchEvent(event);
}
}
dissmiss() попытаться закрыть PopupWindow и PopupWindow:: onDetachedWindow вызвать WindowInputEventReceiver:: dispose() первым.
И затем вызов ViewPostImeInputStage WindowInputEventReceiver:: finishInputEvent, чтобы завершить это событие ACTION_DOWN. Однако экземпляр WindowInputEventReceiver уже настроен, поэтому он выдает предупреждающие сообщения.
Вы можете отладить его с помощью точки останова. откройте InputEventReceiver.java(необходим исходный код android в framework/base/) и установите точку останова в методе dispose.