Ir al contenido principal

Conociendo el ciclo de vida de una actividad en Android

Las actividades son componentes que proveen de una interfaz gráfica de usuario a nuestras apps, estas poseen un ciclo de vida y estados que nos ayudan a identificar en qué fase de ejecución se encuentra nuestra programa, en el siguiente artículo abordaremos una breve explicación acerca de los posibles estados y sus métodos relacionados.

Gestión de memoria

Antes de empezar a describir los estados y métodos, es necesario hacer una breve mención del mecanismo que usa Android para la gestión la memoria, para tener una mejor comprensión del tema.

La gestión de memoria se hace a través de la pila de procesos, esta se crea a partir de las actividades que se encuentran en ejecución; la función de la pila es optimizar el acceso a las apps del dispositivo móvil, así el usuario podrá regresar rápidamente a los programas que recientemente usó.

El ciclo de vida de una actividad en una app Android, es distinta a la de una aplicación de escritorio. Cabe recordar que para cada actividad se crea un hilo/proceso el cual se mantiene hasta que esta es destruida, pero a diferencia de otros sistemas operativos, donde el ciclo es controlado por el usuario, en Android es gestionado por el sistema, así que una actividad permanecerá activa hasta que ya no sea requerida o no haya suficiente memoria y se necesite liberar espacio.

A pesar de que existe una pila de procesos con las actividades en ejecución en el móvil, esto no garantiza que si estamos usando una app y abrimos otra, la primera no sea destruida, ya que esto dependerá de varios factores como la prioridad del programa, servicios relacionados, memoria disponible, etc.

Estados de una app

Ahora que hemos explicado brevemente la gestión de memoria, pasemos a conocer los posibles estados en que se puede encontrar una aplicación Android.

Una actividad puede estar en uno de los siguientes estados:

Activa: como su nombre lo dice, en este estado la actividad se encuentra activa, está siendo usada por el usuario, por lo que está en primer plano y tiene el foco.

Visible: la actividad es visible pero no tiene el foco, esto sucede si se pasa a otra aplicación que no ocupa a totalidad la pantalla y aún podemos visualizar la primera app.

Parada: si cambiamos de aplicación y la primera queda oculta por la segunda, el estado cambiaría a actividad parada.

Destruida: sucede al invocar el método finish() o cuando la actividad es matada por el sistema.


Métodos


Basado en los posibles estados que puede tener una actividad, existen siete métodos que podemos usar al momento de desarrollar nuestras aplicaciones:

OnCreate(): este método es el primero que se ejecuta al crearse una actividad, aquí se inicializan las variables, estructuras de datos y componentes de la aplicación.

OnStart(): se ejecuta el método cuando la app está a punto de ser mostrada al usuario.

OnResume(): es llamado cuando la actividad está lista para interactuar con el usuario. La actividad está en el top de la pila de aplicaciones. Aquí podemos mostrar animaciones 

OnPause(): indica que la actividad está a punto de enviarse a segundo plano, típicamente se usa para guardar el estado de la aplicación, datos persistentes, detener animaciones, sonidos, uso de cpu, etc. 

OnStop(): la aplicación ya no es visible para el usuario porque otra actividad ha pasado a primer plano, en caso de que el sistema no cuenta con más memoria, el proceso asociado a la actividad se podría destruir en esta parte de código.

OnRestart(): indica que la actividad se pasará nuevamente a primer plano, en este momento su estado es detenida. Siempre le sucede la función Onstart().

OnDestroy(): se ejecuta justo antes de que la actividad sea destruida. La destrucción de la actividad puede darse por la llamada al método finish() o porque el sistema necesita liberar espacio en memoria, si es este último caso, es posible que no se ejecute el método OnDestroy(). Para distinguir la forma en que se cerró nuestra app, podemos usar la función  isFinishing().

En el siguiente gráfico visualiza los estados y métodos asociados al ciclo de vida de una actividad:

Ciclo de vida
Ciclo de vida de una actividad en Android





Comentarios