Requisitos previos: ciclo de vida de la actividad en Android
Como se sabe, cada aplicación de Android tiene al menos una actividad asociada. Cuando la aplicación comienza a ejecutarse y se ejecuta, hay varios cambios de estado por los que pasa la actividad. Diferentes eventos, algunos activados por el usuario y otros activados por el sistema, pueden hacer que una actividad haga la transición de un estado a otro. Todos los cambios de estado asociados con la actividad son parte del ciclo de vida de la actividad en Android. Cuando ocurre un determinado evento, cada actividad tiene que pasar por diferentes etapas del ciclo de vida de Android. El estado de la actividad se gestiona manteniendo las pilas de actividades, en las que la nueva actividad está en la parte superior de la pila y el resto de la actividad está debajo de la pila en el orden del tiempo que han estado en la pila.
Imagine 3 actividades, una está en ejecución, la segunda actividad solo está minimizada y se ejecuta en segundo plano, y la tercera actividad también se ejecuta en segundo plano pero ha pasado de primer plano a segundo plano antes que la segunda actividad. Así que aquí la primera actividad estará en la parte superior de la pila, la tercera actividad estará en la parte inferior de la pila y la segunda actividad estará en el medio de la pila.
Hay siete estados del ciclo de vida de una Actividad, de estos siete estados, es seguro que la actividad estará en cualquiera de los siete estados dependiendo del evento que ocurrió.
- enCrear()
- enInicio()
- al reiniciar()
- En resumen()
- en pausa()
- al parar()
- en destruir()
Para obtener información detallada sobre cómo funciona este estado de actividad y cuáles son los cambios que sufre la actividad en cada estado, consulte el artículo sobre el ciclo de vida de la actividad en Android .
Eventos que conducen al cambio de configuración/cambio de estado
Hay muchos eventos que pueden conducir a un cambio de configuración de la aplicación, lo que finalmente provoca un cambio de estado de las actividades. Veamos algunos eventos y casos donde se producen los cambios de estado de actividad.
1. Cambiar la orientación de la aplicación
Digamos que el usuario está viendo la aplicación en modo vertical y, de repente, cambia la orientación de la aplicación al modo horizontal. Dado que cambiar la orientación de la aplicación eventualmente cambiará la vista, lo que conducirá a un cambio de configuración en la aplicación y la actividad asociada con el modo vertical se destruirá y se creará una nueva actividad asociada con el modo horizontal. La actividad en ejecución/activa asociada con el modo vertical tendrá activadas las devoluciones de llamada onPause() , onStop() y onDestroy() . Cuando el usuario cambia la orientación, se crea la nueva actividad y la nueva actividad tendrá devoluciones de llamada onCreate() , onStart() y onResume() activadas.
A continuación se muestra el vídeo de muestra en el que se pueden ver los cambios en los estados de actividad que sufre cuando cambia la orientación de la aplicación. Consulte los mensajes Toast para ver los cambios en el estado de la actividad.
2. Cambiar entre las aplicaciones en la pantalla de ventanas múltiples
Como se sabe, Android ha lanzado una función de ventanas múltiples para Android 7 para las aplicaciones con nivel de API 24 y superior, por lo que cuando cambia la configuración de la aplicación de Android, el sistema de Android notifica dichos eventos y cambia los estados del ciclo de vida de la actividad según las condiciones en las que haya cambiado la configuración de la aplicación. El ejemplo común de cambiar la configuración de la aplicación es cuando el usuario cambia el tamaño de una actividad con respecto a otra actividad. Su actividad puede manejar la configuración para cambiarse a sí misma, o puede permitir que el sistema destruya la actividad y la recree con las nuevas dimensiones.
En el modo de ventanas múltiples, aunque hay dos aplicaciones que son visibles para el usuario, solo hay una aplicación con la que el usuario interactúa está en primer plano y tiene el foco en el estado onResume() y otra aplicación que está en el fondo y visible para el usuario está en estado de pausa. Por lo tanto, se puede decir que la actividad con la que el usuario está interactuando es la única actividad que se encuentra en estado reanudado, mientras que todas las demás actividades se inician pero no se reanudan. Cuando el usuario cambia de una aplicación a otra, el sistema llama al estado del ciclo de vida onPause() en la aplicación en ejecución y al estado del ciclo de vida onResume() en otra aplicación que anteriormente no estaba en estado activo. Cambia entre estos dos métodos cada vez que el usuario alterna entre aplicaciones.Consulte los mensajes Toast para ver los cambios en el estado de la actividad.
Se puede ver que cuando hay varias pantallas ejecutándose al mismo tiempo, cada vez que el usuario cambia el tamaño de una pantalla en relación con otra pantalla, la actividad original se destruye y se crea una nueva actividad correspondiente al nuevo tamaño de pantalla.
3. La actividad o el diálogo aparecen en primer plano
Supongamos que una actividad se está ejecutando y está en progreso, pero al mismo tiempo, una nueva actividad aparece en primer plano y cubre parcialmente la actividad en curso, y toma el foco y hace que la actividad en ejecución entre en el estado de Pausa por llamando a onPause() en la actividad en ejecución y la nueva actividad entra en el estado onResume() . Cuando la actividad cubierta vuelve al primer plano y recupera el foco, llama a onResume() , mientras que la actividad en ejecución vuelve a entrar en el estado onPause() .
Si aparece una nueva actividad o cuadro de diálogo en primer plano, tomando el foco y cubriendo completamente la actividad en curso, la actividad cubierta pierde el foco y entra en el estado Detenido. Luego, el sistema operativo Android llama inmediatamente a onPause() y onStop() en sucesión. Cuando la misma instancia de la actividad cubierta vuelve al primer plano, el sistema llama a onRestart() , onStart() y onResume() en la actividad. Si se trata de una nueva instancia de la actividad cubierta que pasa a un segundo plano, el sistema no llama a onRestart() , solo llama a onStart() y onResume() .Consulte los mensajes Toast para ver los cambios en el estado de la actividad.
En el video anterior, la actividad cubre otra actividad por completo y los cambios de estado se pueden observar de acuerdo con ella.
4. El usuario toca el botón Atrás
Si una actividad está en primer plano y en estado de ejecución, y el usuario toca el botón Atrás, la actividad pasa por las devoluciones de llamada onPause() , onStop() y onDestroy() . Además de destruirse, la actividad también ha eliminado la pila, que se utiliza para almacenar las actividades en orden de tiempo en la pila. Es importante tener en cuenta que, de forma predeterminada, la devolución de llamada onSaveInstanceState() no se llama en este caso, ya que se supone que el usuario tocó el botón Atrás sin esperar volver a la misma instancia de la actividad, por lo que no es necesario para guardar la instancia de la actividad. Si el usuario anula el método onBackPressed() , aún se recomienda encarecidamente que el usuario invoquesuper.onBackPressed() del método anulado, de lo contrario, si super.onBackPressed() no se invoca, puede provocar un comportamiento ambiguo de la aplicación y una mala experiencia del usuario. Consulte los mensajes Toast para ver los cambios en el estado de la actividad.
Publicación traducida automáticamente
Artículo escrito por lavishgarg26 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA