2010-07-23 9 views
5

Parece que no encuentro ninguna documentación sobre los detalles del ciclo de ejecución de una actividad para Android.Anatomía de un Android Run Loop

Apple documenta el "anatomy of a run loop", y eso es más o menos lo que estoy buscando. La documentación de Android simplemente dice "Activity Is Running" en su diagrama de estado del ciclo de vida. Obviamente, eso está respaldado por algún tipo de ciclo de ejecución.

¿Alguien tiene algo de información (también conocido como Documentación) en el interior del ciclo de ejecución de una actividad?

editar - Debo aclarar que supongo que el ciclo de ejecución en realidad es propiedad y se ejecuta por el hilo de la interfaz de usuario principal. Es probable que la funcionalidad actual de la Actividad se inyecte en este runloop en cierto punto. Me interesa el ciclo general de ejecución de subprocesos de la interfaz de usuario, así como también el papel que desempeña la actividad en él.

+0

Debo estar perdiendo algo. ¿Qué detalles se necesitan más que "La actividad se está ejecutando"? ¿Por qué es importante lo que Android está haciendo en ese ciclo, siempre y cuando 'implemente' o' extienda' las cosas apropiadas para que su aplicación haga lo que debe hacer? – kiswa

+0

Porque cuando está escribiendo aplicaciones con hebras, las características de los bucles de ejecución pueden ser información útil por una amplia variedad de razones. Dicho esto, creo que la curiosidad por sí sola sería una razón válida. – DougW

+0

Pedir una "idea de los aspectos internos del ciclo de ejecución de una actividad" es una pregunta demasiado amplia. – CommonsWare

Respuesta

3

La respuesta breve es "no se preocupe, ya está hecho".

Las actividades y otras construcciones se encuentran en la parte superior de android.os.Looper, comunicándose con ella a través de instancias de android.os.Handler. Un Looper administra su "ciclo de ejecución", distribuye mensajes de una cola y bloquea el hilo cuando está vacío. Handler s se comunican con un hilo Looper y proporcionan un mecanismo para trabajar con la cola de mensajes.

La mayoría de las veces no tendrá que trabajar con ninguna de las dos directamente. Los eventos del ciclo de vida de los principales componentes de la aplicación, como Actividades y Servicios, se enviarán a su código. Si usted es curioso en cuanto a lo que hay debajo del capó, las fuentes disponibles para ambos:

https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/os/Looper.java

https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/os/Handler.java

+0

Esperaba que hubiera una versión más digerida de esta información, pero si no la hay, esa es la respuesta. Gracias adamp. – DougW

0

Actualizado:

Realmente no hay nada específico que se refiere por "Actividad está en marcha." La actividad simplemente muestra su UI, maneja la entrada, ejecuta las funciones necesarias y comienza otra actividad.

Si le interesan las implicaciones que tendría el multithreading en el ciclo de ejecución, en realidad no existe una relación concreta. Sus hilos pueden hacer su trabajo, y el estado de la Actividad funcionará de manera independiente y automáticamente actualizará su UI (siempre que llame al postInvalidate() correctamente).


original:

Tome una mirada en el primer diagrama en esta página: http://developer.android.com/reference/android/app/Activity.html

Se especifica la "vida" de cada actividad y lo que afirma que puede ser en, si eso es lo que 'que estas buscando.

+0

A lo que me he vinculado ... Quiero saber qué está pasando en la parte de "Actividad se está ejecutando". – DougW

+0

Woops, mi error. Editaré mi respuesta en un minuto. –

+0

No hay problema Andy. Sin embargo, definitivamente hay un ciclo de ejecución subyacente, y estoy seguro de que se parece al que he vinculado para el iPhone. El estado de "ejecución" de actividades se inyecta presumiblemente en el runloop de UI Thread global, pero ciertamente tiene su propio conjunto de pasos en cada bucle para verificar las devoluciones de llamadas, estado, etc. Tengo curiosidad por saber cómo se ve todo ese shebang. – DougW