En este tutorial se explica el ciclo de vida de una Activity en Android Studio. Cuando el usuario navega por la app, cada actividad pasa por distintos estados, llamando a un método distinto según el estado del ciclo de vida en el que se encuentre.
Si quieres conocer el ciclo de vida de un fragmento, ve el tutorial ciclo de vida e un fragmento.
El ciclo de vida de una actividad es de las partes fundamentales al momento de desarrollar una aplicación. Ya que puedes controlar el comportamiento de tu App de acuerdo al estado en el que se encuentre.
Ya sea, si tu app esta visible al usuario, en segundo plano, no visible al usuario pero abierta o bien sin iniciar. Tú puedes decidir qué hacer en cada situación.
Dependiendo de que ten compleja sea la app, puedes o no necesitar implementar los métodos del ciclo de vida.
Estados comunes del ciclo de vida.
Abriendo la activity.
Cuando abrimos la actividad iniciará el primer estado que es Creando, aquí se llama al método onCreate(). En este estado se inicializan parámetros importantes de la app, este método solo se llama una vez cuando inicia la actividad.
Una vez creada, pasamos al estado Iniciando, en el cual se llama al método onStart(). Básicamente aquí se muestra la UI y se prepara para que el usuario interactúe con la app.
Después sigue el estado Reanudar, cuando inicia este estado se llama al método onResume(). En este estado permanecerá la actividad mientras el usuario interactúe con ella. Si se cierra la actividad, o pasa a segundo plano entonces cambiará de estado.
Cuando se muestra la app junto con otras apps.
Este caso puede ocurrir cuando el usuario puede ver más de una app en su pantalla para elegir alguna, pero no interactúa con ninguna. En ese caso la Activity estará en el estado Pausado, llamando al método onPause().
De aquí el usuario tiene 2 opciones:
Una es que el usuario regrese a nuestra app, en este caso pasará al estado Reanudar llamado al método onResume.
La otra es que el usuario pase a otra app, en este caso nuestra Activity pasará al estado Detenido, llamando al método onStop.
Si la Activity ya no es visible, pero esta abierta.
Cuando la Activity no es visible, es decir, el usuario está viendo otra app, pero puede regresar a la nuestra.
En este caso, nuestra actividad está en estado Detenido y llamo al método onStop(). Si el usuario vuelve a nuestra app, pasará al estado Iniciando llamando al método onStart().
Al cerrar la actividad.
Cuando el usuario cierra la actividad, pasará al estado Destruido llamando al método onDestroy().
El método onDestroy(), es el último método al que se llama antes de finalizar la actividad.
Estados del ciclo de vida.
Creando onCreate()
Se llama cuando se está creando la actividad, aquí se crea la vista y se inicializan componentes.
Este método se llama cuando inicia la actividad. Es el primero en ejecutarse, aquí se coloca la lógica básica de la app. Esta lógica va a ocurrir una sola vez en todo el ciclo de vida de la actividad.
Función que realiza.
En este método es buena idea inicializar elementos, variables, eventos de onClick, etc. Aunque según tu proyecto puedes decidir que es mejor.
Cuando creas una Activity, este método ya aparece implementado, relacionando un archivo xml que contiene la interfaz de usuario.
Siguiente estado.
La actividad no permanece en este estado. Al completar las funciones implementadas, pasa al siguiente el cual es Iniciar la actividad.
Iniciando onStart()
Este estado puede iniciar desde dos estados distintos:
- Puede iniciar después del método onCreate(), cuando se crea la actividad.
- También puede iniciar después del método onRestart(), cuando el usuario abrió otra App, pero después regreso a esta app.
Función que realiza.
En este estado del ciclo de vida, se llama al método onStart(). Esté método hace que el usuario pueda ver la actividad. Mientras que la app se prepara para convertirse en interactiva.
Siguiente estado.
Este método termina muy rápido, y la actividad no permanece en este estado. Al completarse pasa al siguiente estado.
Reanudar onResume()
Este estado puede iniciar después de dos estados distintos:
- Puede iniciar después del método onStart(). Que es cuando está iniciando la actividad.
- Pero también puede iniciar después del método onPause(). Que es cuando el usuario dejo en segundo plano la app, pero regresa a ella.
Función que realiza
Este estado es cuando la app ya interactúa con el usuario, en este estado es en el que se va a encontrar la actividad mientras este en uso.
Aquí puedes inicializar, algún elemento que necesites que sea visible y este en primer plano para poderlo inicializar.
Estado siguiente.
Este estado cambiará si el usuario navega a otra actividad, a otra app, si entra una llamada telefónica o si se apaga el dispositivo.
Cuando se interrumpe este estado, pasará al estado en Pausa, y dependiendo de lo que haga el usuario puede ir a diversos estados.
Pausado onPause().
Para que se active este estado, es necesario que la actividad ya este creada e interactuando con el usuario.
Este estado es el primero en enterarse que el usuario está abandonando la actividad.
Básicamente, se hace la llamada del método onPause() cuando la actividad ya no está en primer plano.
Función que realiza.
Este método se puede usar, para pausar o ajustar operaciones que no deben continuar cuando no hay interacción directa con el usuario.
Ten en cuenta que la ejecución de onPause() es muy rápida. Por lo que no se recomienda guardar datos de la aplicación, pasar grandes cantidades de datos, etc.
Ya que puede finalizar el estado de Pausa, sin terminar por completo la función que queríamos realizar.
Siguiente estado.
Si la actividad sigue visible, pero en segundo plano y el usuario regresa a esta misma actividad, entonces pasará al estado Reanudar llamado al método onResume().
Si la actividad ya no está visible, entonces pasará al estado de onStop().
Detenida onStop()
Este estado inicia cuando la actividad ya no es visible. Llamando al método onStop().
Aquí todavía no de destruye la actividad. Puede ser que el usuario abrió otra app y la nuestra ya no es visible, pero el usuario aún puede regresar a la actividad.
Función que realiza.
En este estado aún se recuerdan datos de la actividad. Por ejemplo, si el usuario ingresó un texto a un EditText, al reanudarse desde este estado, ese texto seguirá ahí. Por lo que no necesitas reiniciar componentes.
En este estado la app debe liberar o hacer ajustes de los recursos que no necesite utilizar mientas la actividad no es visible. Puedes usar este estado, para operaciones de finalización.
Aquí puedes guardar información de tu base de datos, o alguna acción que tal vez requiera un mayor uso del CPU.
Siguiente estado.
Si estamos en este estado (Detenido) y el usuario regresa a la actividad, pasara al estado onRestart() y después al estado onStart().
Si el usuario ya no regresa a la actividad, o por alguna razón cerro la app, entonces la actividad pasará al estado onDestroy().
Reiniciar onRestart()
Este método se llama cuando la actividad estaba en estado Detenido y el usuario regresó a la actividad.
En ese caso llama al método onRestart().
Siguiente estado.
Luego de este método, el sistema continuará con el método onStart(), para iniciar la actividad de nuevo.
Destruir onDesroy().
Este estado se llama antes de que finalice la actividad. onDestroy() el último método que se llamará antes de finalizar la actividad.
Un ejemplo es que el usuario vaya a finalizar por completo la actividad.
Otro ejemplo sería si el sistema se finaliza temporalmente, porque la actividad tiene un cambio de configuración.
Siguiente estado.
Después de este método finaliza la actividad. Y no hay ningún estado siguiente. Hasta que el usuario abra la actividad de nuevo.
Para más tutoriales de Android Studio, ve a la sección de Android Studio.