Ciclo de vida de una aplicación Android
¿Porqué es
importante esto?
El ciclo de vida de una aplicación
en Android es manejada por el sistema operativo, basándose en las necesidades
del usuario, los recursos disponibles, etc. Si tenemos una aplicación que está
consumiendo muchos recursos y arrancamos otra nueva aplicación, el sistema
operativo probablemente le diga a la aplicación que se queda en segundo plano
que libere todo lo que pueda, y si es necesario la cerrará. En Android los
recursos son normalmente muy limitados y por eso el sistema operativo tiene más
control sobre las aplicaciones que en programas de escritorio.
En la mayoría de los casos, cada
aplicación Android corre en su propio proceso de Linux. Este proceso es creado
para la aplicación cuando la arrancamos y seguirá corriendo hasta que no sea
necesario y el sistema reclame recursos para otras aplicaciones y se los dé a
éstas.
Tipos de
procesos
Para decidir que proceso debe ser
liquidado, Android ordena los procesos por importancia:
- Foregound Process. Es la aplicación que contiene la actividad que ahora mismo se está mostrando en pantalla (Se ha llamado al método onResume()). Habrá muy pocos procesos Foreground corriendo a la vez en el sistema y estos procesos solamente se liquidarán si la memoria es tan baja que ni matando al resto de procesos tenemos los recursos necesarios.
- Visible process. Es el que contiene una actividad que es visible, pero no en primera fila (se ha llamando al método onPause()). Por ejemplo, estoy leyendo un email, y hago clic en un enlace http y abre el navegador y me lleva a esa web. En ese momento el navegador sería Foregound Process y el cliente de email sería un Visible process. Estos procesos son considerados importantes por el sistema operativo y normalmente no se cierran.
- Service process. Es un servicio como los de cualquier unix. Estos procesos hacen cosas en segundo plano que normalmente son importantes, el sistema nunca va a liquidar un servicio a menos que sea necesario para mantener vivos todos los Visible y Foreground.
- Background process. Es un proceso que contiene una actividad que actualmente no es visible por el usuario, estos procesos no tienen demasiada importancia, puede ser un programa que arranqué hace tiempo y no lo he vuelto a usar, pasa a estar en background. Por eso es importante que cuando nuestra aplicación pase a Background, liberar en la medida de lo posible todos los recursos que podamos.
- Empty process. Es un proceso que no alberga nada ya, lo usa Android como cache para cuando se crea un proceso nuevo.
Al Turrón
Android puede en cualquier momento
pausar, parar, destruir nuestra aplicación según las necesidades del momento y
nosotros debemos controlar todos estos eventos para hacer una aplicación
robusta.
- onCreate() Llamado cuando la actividad es llamada por primera vez. Es donde debes crear la inicialización normal de la aplicación, crear vistas, hacer los bind de los datos, etc. Este método te da acceso al estado de la aplicación cuando se cerró. Después de esta llamada siempre se llama al onStart().
- onRestart() Llamada cuando tu actividad ha sido parada, antes de volver a ser empezada. Siempre viene después un onStart().
- onResume() Llamada cuando la actividad va a empezar a interactuar con el usuario, en este punto es el último punto antes de que el usuario ya vea la actividad y pueda empezar a interactuar con ella. Siempre después de un onResume() viene un onPause().
- onPause() Llamada cuando el sistema va a empezar una nueva actividad. Ésta necesita parar animaciones, y parar todo lo que esté haciendo. Hay que intentar que esta llamada dure poco tiempo, porque hasta que no se ejecute este método no arranca la siguiente actividad. Después de esta llamada puede venir un onResume() si la actividad vuelve a primer plano o un onStop() si se hace invisible para el usuario.
- onStop() Llamada cuando la actividad ya no es visible al usuario, porque otra actividad ha pasado a primer plano. Desde Aquí se puede ir al onRestart() si vuelve a primer plano o al onDestroy() si se destruye del todo.
- onDestroy() Esta es la llamada final a la actividad, después de ésta, es totalmente destruida.
Un gráfico cortesía de google
explicando el proceso gráficamente

No hay comentarios:
Publicar un comentario