2011-11-21 17 views
6

Estoy tratando de entender qué sucede cuando se hace clic en un botón en Android. Así que configuré un par de puntos de interrupción por un simple clic de botón. La imagen muestra lo que ocurre cuando se hace clic en un botón mis preguntas son: (Los eventos generados por la GUI son eventos que se generan como resultado de la interacción con la interfaz gráfica de usuario, por ejemplo, Clics de botones, edición de texto, etc.)¿Cómo maneja Android los eventos GUI?

1- Is Looper. loop() ¿el bucle principal de la aplicación o el looper del sistema operativo?

2- ¿De dónde viene ViewRootImpl (manejador) .dispatchMessage (Mensaje) residen? Aplicación o sistema operativo?

3- ¿Puedo interceptar GUI genera eventos de la lanzadera principal? ¿Si es así, entonces cómo?

4- ¿Podemos suponer con seguridad que todos GUI genera eventos se manejan en ViewRootImpl (manejador) .handleCallback (Mensaje)?

enter image description here

Respuesta

2

Es Looper.loop() el bucle principal para la aplicación o el sistema operativo del garfio?

No sé lo que usted piensa que es "OS looper". El Looper se ejecuta en su proceso, si eso es lo que quiere decir.

¿Dónde reside ViewRootImpl (handler) .dispatchMessage (Message)? Aplicación o sistema operativo?

No sé lo que piensa que es el "SO" en este contexto. ViewRootImpl es una clase compilada por Dalvik que se carga en su máquina virtual Dalvik y su código se ejecuta dentro de su proceso. De lo contrario, no podrías verlo en tu rastro de pila.

¿Puedo interceptar eventos generados por la GUI en el looper principal?

Modificando el firmware para reemplazar varias clases como ViewRootImpl con su propio código.

¿Podemos suponer con seguridad que todos los eventos generados por la GUI se manejan en ViewRootImpl (handler) .handleCallback (Message)?

Sin duda no asumiría eso. Por ejemplo, no todas las aplicaciones usan el marco de widgets (por ejemplo, juegos).

Cuestiones relacionadas