2010-10-20 8 views
6

Esto no parece estar bien documentado o me lo perdí, así que antes de ejecutar un montón de mis propias pruebas me preguntaba si alguien ya sabe las respuestas a algunas de estas preguntas.¿Cómo funcionan los ciclos de vida de la actividad de Android en relación con toda la aplicación?

En primer lugar, cuando digo "Aplicación" me refiero a extender la clase Application. http://developer.android.com/reference/android/app/Application.html

Las preguntas que tengo son las siguientes, algunas están relacionadas.

  1. Cuando un usuario deja una una actividad desde dentro de la aplicación, y se dirige a la actividad de otra aplicación, que hace la aplicación de alguna manera obtener una pausa, así, a pesar de que no tiene un onPause()? ¿O continúa viviendo sin pausa hasta que se destruyan todas sus actividades?

  2. ¿Cuándo se detiene la aplicación? Cuando todas sus actividades se destruyen?

  3. ¿Hay alguna posibilidad de que una de las actividades sobre las aplicaciones puedan estar en funcionamiento sin una instancia de la aplicación, o siempre existirá la clase Application si una de las actividades realiza?

  4. Si hay algún proceso ejecutándose en la Aplicación, y sus Actividades están todas en pausa, ¿continuará ejecutándose ese proceso?

  5. ¿La aplicación se ve afectada por la rotación de alguna manera o la rotación solo cambia las actividades?

Gracias

Respuesta

7
  1. Al decir que la solicitud no tiene onPause que no ocurra nada a la aplicación. Cuando se llama a OnPause en tu actividad, no ocurre nada especial, tu actividad continúa ejecutándose y puede hacer lo que quiera, incluso ejecutar nuevos hilos, los temporizadores pueden activarse, lo que sea.

  2. Creo que lo que están pidiendo es: cuando se destruye una aplicación y cuando el método onTerminate en una aplicación llamada? La respuesta es difícil de precisar y depende del sistema, no necesariamente ocurre cuando se activan todas las actividades en Destroyed. De hecho, incluso cuando se llama a onDestroy, sus actividades no son necesariamente basura. Cuando el sistema tiene poca memoria, el proceso en el que vive su aplicación puede ser eliminado, lo que significa que su aplicación desaparecerá; onTerminate puede o no ser llamado. En ese momento, todas las actividades, servicios, etc. también son asesinados.

  3. La aplicación siempre se instancia primero, una actividad debe tener una aplicación asociada, al igual que cómo se define en el AndroidManifest.xml.

  4. Procesos Nunca pausa en Android, el método onPause en realidad no realmente hacer otra cosa que decir que para hacer una pausa en su aplicación cosas nada. Aparte de eso, el proceso sigue avanzando, sus hilos continúan ejecutándose, incluso el hilo principal recibe Intenciones con un BroadcastReceiver.

  5. La aplicación obtiene devoluciones de llamada de rotación en onConfigurationChanged de la aplicación(). No estoy seguro de si puede desactivarlo ya que no hay atributos configChanges admitidos por las etiquetas de la aplicación en AndroidManifest.xml.

Una buena comparación con la aplicación es el campo estático en cualquiera de sus clases. Los campos estáticos vivirán mientras el proceso no se destruya, al igual que la Aplicación. A todas las actividades, servicios, etc., se puede acceder a los campos estáticos (supongamos que los campos estáticos son públicos), al igual que su aplicación.

¡Buena suerte! Jacob

0

esto es todo lo explican en detalle aquí: http://developer.android.com/reference/android/app/Activity.html. Si lo lees, debes entender todo.

rápida real:

  1. Cada actividad tiene un onPause. Puede elegir no anularlo, pero se llamará de todos modos. Tan pronto como cambie, se llamará a OnPause.

  2. Definir "detener". Definir "Aplicación". El proceso puede durar para siempre, pero simplemente dormirá y esperará hasta que se inicie una de sus actividades.

  3. Es imposible que una actividad exista sin ser instanciada.

  4. Cada código ejecutado se ejecuta en un proceso, por lo que siempre hay un proceso para su aplicación. El proceso continuará existiendo después de cambiar a una aplicación diferente, pero estará en estado inactivo. Android podría en cualquier momento matar el proceso si los recursos del sistema se agotan.

  5. Cada vez que gira la pantalla, su actividad será destruida y recreada, a menos que específicamente deshabilite eso.

+1

estoy preguntando por la clase Application (http://developer.android.com/reference/android/app/Application.html) no Actividades. Me pregunto cómo funciona la clase Application en relación con los ciclos de vida de sus Actividades – cottonBallPaws

+0

y con "Stop" Quiero decir que ya no ejecuto ningún proceso y/o que existe en la memoria de forma que las Actividades puedan acceder a sus datos. – cottonBallPaws

+0

Digámoslo de esta manera: ¿Qué intenta lograr o qué problema está tratando de resolver? ¿Para qué necesita el objeto Aplicación? – EboMike

2

La manera más fácil de entender esto es simplemente olvidar que existe la aplicación. La aplicación no tiene nada que ver con el ciclo de vida de la aplicación. Es solo un proceso global, que puede ser útil para algunas cosas, pero que no se necesita para nada.Todo sobre cómo se ejecuta una aplicación gira en torno a los componentes Activity, BroadcastReceiver, Service y ContentProvider declarados en su archivo .apk.

2

Una instancia de aplicación puede seguir existiendo después de su última actividad se destruye. Incluso si TODAS las actividades se han ido (es decir, todos tienen sus métodos onDestroy llamados), la instancia de la aplicación todavía podría existir.

Esta instancia de aplicación podría ser "re-utilizado" por lo que de otro modo podría pensar que son dos operaciones separadas de su aplicación.

Cuestiones relacionadas