¿Cuál es el ciclo de vida de una actividad de Android? ¿Por qué son tantos métodos que suenan similares ( onCreate()
, onStart()
, onResume()
) llamaron durante la inicialización, y tantos otros ( onPause()
, onStop()
, onDestroy()
) llamaron al final?
¿Cuándo se llaman estos métodos y cómo se deben usar correctamente?
Respuestas:
Véalo en Activity Lifecycle (en Desarrolladores de Android).
onCreate () :
onRestart () :
onStart () :
onResume () :
onPause () :
onStop () :
onDestroy () :
Cuando la actividad se carga por primera vez, los eventos se llaman de la siguiente manera:
Cuando hace clic en el botón Teléfono, la Actividad pasa al fondo y se llaman los siguientes eventos:
Salga del marcador del teléfono y se llamarán los siguientes eventos:
Cuando hace clic en el botón Atrás O intenta finalizar () la actividad, los eventos se llaman de la siguiente manera:
Estados de actividad
El sistema operativo Android utiliza una cola prioritaria para ayudar a administrar las actividades que se ejecutan en el dispositivo. Según el estado en que se encuentre una actividad particular de Android, se le asignará una cierta prioridad dentro del sistema operativo. Este sistema prioritario ayuda a Android a identificar actividades que ya no están en uso, lo que permite que el sistema operativo recupere memoria y recursos. El siguiente diagrama ilustra los estados por los que puede pasar una actividad durante su vida útil:
Estos estados se pueden dividir en tres grupos principales de la siguiente manera:
Activo o en ejecución : las actividades se consideran activas o en ejecución si están en primer plano, también conocidas como la parte superior de la pila de actividades. Esta se considera la actividad de mayor prioridad en la pila de actividades de Android y, como tal, solo será eliminada por el sistema operativo en situaciones extremas, como si la actividad intenta usar más memoria de la disponible en el dispositivo, ya que esto podría causar que la interfaz de usuario dejar de responder
En pausa : cuando el dispositivo se va a dormir, o una actividad aún está visible pero parcialmente oculta por una actividad nueva, no de tamaño completo o transparente, la actividad se considera en pausa. Las actividades pausadas aún están activas, es decir, mantienen toda la información del estado y de los miembros y permanecen adjuntas al administrador de ventanas. Esta se considera la segunda actividad de mayor prioridad en la pila de actividades de Android y, como tal, solo será eliminada por el sistema operativo si la eliminación de esta actividad satisfará los requisitos de recursos necesarios para mantener la actividad activa / en ejecución estable y receptiva.
Detenido : las actividades que están completamente oscurecidas por otra actividad se consideran detenidas o en segundo plano. Las actividades detenidas aún tratan de retener su información de estado y miembro durante el mayor tiempo posible, pero las actividades detenidas se consideran la prioridad más baja de los tres estados y, como tal, el sistema operativo matará las actividades en este estado primero para satisfacer los requisitos de recursos de actividades de mayor prioridad.
* Actividad de muestra para comprender el ciclo de vida **
fuente
La actividad tiene seis estados.
El ciclo de vida de la actividad tiene siete métodos.
onCreate()
onStart()
onResume()
onPause()
onStop()
onRestart()
onDestroy()
Situaciones
Cuando abra la aplicación
Cuando se presiona el botón Atrás y sale de la aplicación
Cuando se presiona el botón de inicio
Después de presionar el botón de inicio cuando vuelve a abrir la aplicación de la lista de tareas recientes o hacer clic en el icono
Al abrir la aplicación, otra aplicación desde la barra de notificaciones o la configuración abierta
El botón Atrás presionado desde otra aplicación o configuración y luego utilizado puede ver nuestra aplicación
Cuando cualquier diálogo se abre en la pantalla
Después de cerrar el cuadro de diálogo o el botón Atrás del cuadro de diálogo
Cualquier teléfono está sonando y el usuario está en la aplicación
Cuando el usuario presionó el botón de respuesta del teléfono
Después de finalizar la llamada
Cuando la pantalla del teléfono está apagada
Cuando la pantalla se vuelve a encender
fuente
Toda la confusión se debe a que Google eligió nombres no intuitivos en lugar de algo de la siguiente manera:
El Diagrama de actividad se puede interpretar como:
fuente
CICLO DE VIDA DE ANDROID
Existen siete métodos que administran el ciclo de vida de una aplicación de Android:
Responda para cuáles son todos estos métodos para:
Tomemos un escenario simple donde saber en qué orden se llaman estos métodos nos ayudará a dar una idea clara de por qué se usan.
onCreate()
- - -> - - ->onStart()
onResume()
onPause()
- - ->onStop()
onRestart()
- - -> - - ->onStart()
onResume()
onStop()
- - ->onDestroy()
Hay cuatro estados en los que puede existir una actividad:
El estado inicial implica:
Crear un nuevo proceso de Linux, asignar nueva memoria para los nuevos objetos de IU y configurar toda la pantalla. Entonces, la mayor parte del trabajo está involucrado aquí.
El estado de ejecución implica:
Es la actividad (estado) que está actualmente en la pantalla. Este estado solo maneja cosas como escribir en la pantalla y tocar y hacer clic en los botones.
El estado de pausa implica:
Cuando una actividad no está en primer plano y, en cambio, está en segundo plano, se dice que la actividad está en estado de pausa.
El estado detenido implica:
Una actividad detenida solo se puede comprar en primer plano al reiniciarla y también se puede destruir en cualquier momento.
El administrador de actividades maneja todos estos estados de tal manera que la experiencia y el rendimiento del usuario siempre están en su mejor momento, incluso en escenarios donde la nueva actividad se agrega a las actividades existentes.
fuente
Me gusta esta pregunta y las respuestas, pero hasta ahora no hay cobertura de devoluciones de llamada de uso menos frecuente como onPostCreate () o onPostResume () . Steve Pomeroy ha intentado un diagrama que incluye estos y cómo se relacionan con elciclo de vida Fragment de Android, en https://github.com/xxv/android-lifecycle . Revisé el gran diagrama de Steve para incluir solo laparte de Actividad y lo formateé para imprimir en letra de una página. Lo publiqué como un PDF de texto en https://github.com/code-read/android-lifecycle/blob/master/AndroidActivityLifecycle1.pdf y debajo está su imagen:
fuente
Desde la página de Desarrolladores de Android,
onPause ():
onStop ():
Ahora suponga que hay tres Actividades y usted va de A a B, luego onPause de A será llamado ahora de B a C, luego onPause of B y onStop of A serán llamadas.
La actividad en pausa obtiene un currículum y se detiene reiniciado.
Cuando usted llama
this.finish()
, onPause-onStop-onDestroy. Lo principal para recordar es: las actividades pausadas se detienen y una actividad detenida se destruye cada vez que Android requiere memoria para otras operaciones.Espero que sea lo suficientemente claro.
fuente
Agregar más información sobre la respuesta altamente calificada (Se agregó una sección adicional de KILLABLE y el siguiente conjunto de métodos, que se llamarán en el ciclo de vida):
Fuente: developer.android.com
Tenga en cuenta el " Killable columna " en la tabla anterior: para aquellos métodos que están marcados como eliminables, después de que ese método devuelve, el sistema puede el proceso que aloja la actividad en cualquier momento sin que se ejecute otra línea de su código.
Debido a esto, debe usar el
onPause()
método para escribir cualquier dato persistente (como las ediciones del usuario) en el almacenamiento. Además,onSaveInstanceState(Bundle)
se llama al método antes de colocar la actividad en dicho estado de fondo, lo que le permite guardar cualquier estado de instancia dinámica en su actividad en el dadoBundle
, para luego ser recibidoonCreate(Bundle)
si la actividad necesita ser recreada.Tenga en cuenta que es importante guardar datos persistentes en
onPause()
lugar deonSaveInstanceState(Bundle)
porque este último no es parte de las devoluciones de llamada del ciclo de vida, por lo que no se llamará en todas las situaciones como se describe en su documentación.Me gustaría agregar algunos métodos más. Estos no se enumeran como métodos de ciclo de vida, pero se llamarán durante el ciclo de vida dependiendo de algunas condiciones. Dependiendo de sus requisitos, es posible que deba implementar estos métodos en su aplicación para un manejo adecuado del estado.
Mi código de aplicación usando todos estos métodos:
Actividad de inicio de sesión:
salida: (antes de la pausa)
salida: (después de reanudar desde pausa)
Tenga en cuenta que
onPostResume()
se invoca aunque no se cita como método del ciclo de vida.fuente
Ejecuto algunos registros según las respuestas anteriores y aquí está la salida:
Iniciando actividad
Deteniendo la actividad
En mi opinión personal, solo se requieren dos onStart y onStop.
onResume parece estar en cada instancia de regreso, y onPause en cada instancia de partida (excepto para cerrar la aplicación).
fuente