Как Android обрабатывает события GUI? - PullRequest
6 голосов
/ 21 ноября 2011

Я пытаюсь понять, что происходит при нажатии кнопки в Android.Поэтому я установил пару точек останова для простого нажатия кнопки.На рисунке показано, что происходит при нажатии кнопки. Вот мои вопросы: (события, сгенерированные GUI, - это события, которые генерируются в результате взаимодействия с графическим интерфейсом, например, нажатия кнопок, редактирование текста и т. Д.)

1- IsLooper.loop () основной цикл для приложения или петлителя ОС?

2 - Где находится ViewRootImpl (обработчик) .dispatchMessage (Сообщение)?Приложение или ОС?

3- Могу ли я перехватывать сгенерированные GUI события в главном петлителе?если да, то как?

4- Можем ли мы с уверенностью предположить, что все сгенерированные GUI события обрабатываются в ViewRootImpl (обработчик) .handleCallback (Message)?

enter image description here

1 Ответ

2 голосов
/ 21 ноября 2011

Является ли Looper.loop () основным циклом для приложения или петлителя ОС?

Я не знаю, что вы думаете о "OS Looper". Looper работает в вашем процессе, если вы это имеете в виду.

Где находится ViewRootImpl (обработчик) .dispatchMessage (Сообщение)? Приложение или ОС?

Я не знаю, что вы думаете об «ОС» в этом контексте. ViewRootImpl - это скомпилированный Dalvik класс, который загружается в вашу виртуальную машину Dalvik и его код выполняется внутри вашего процесса. В противном случае вы не сможете увидеть его в трассировке стека.

Могу ли я перехватывать сгенерированные GUI события в главном петлителе?

Только путем изменения прошивки для замены различных классов, таких как ViewRootImpl, на ваш собственный код.

Можем ли мы с уверенностью предположить, что все сгенерированные события GUI обрабатываются в ViewRootImpl (обработчик) .handleCallback (Сообщение)?

Я, конечно, не сделал бы этого предположения. Например, не все приложения используют каркас виджетов (например, игры).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...