Entradas populares

viernes, 29 de mayo de 2015

Ciclo de vida de una aplicación Android

El ciclo de vida de una aplicación Android es bastante diferente al ciclo de vida de una aplicación en otros S.O., como Windows. La mayor diferencia es que, en Android el ciclo de vida es controlado principalmente por el sistema, en lugar de ser controlado directamente por el usuario.
Una aplicación en Android va a estar formada por un conjunto de elementos básicos de interacción con el usuario, conocidos como actividades. Además de varias actividades una aplicación también puede contener servicios. Son las actividades las que realmente controlan el ciclo de vida de las aplicaciones, dado que el usuario no cambia de aplicación, sino de actividad. El sistema va a mantener una pila con las actividades previamente visualizadas, de forma que el usuario va a poder regresar a la actividad anterior pulsando la tecla «retorno».

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 qué proceso debe ser liquidado, Android ordena los procesos por importancia:
      1. 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.
        2. Visible process. Es el que contiene una actividad que es visible, pero no en primera fila (se ha llamado 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 mail sería un Visible process. Estos procesos son considerados importantes por el sistema operativo y normalmente no se cierran.
         3. 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.
     4. 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.
        5. Empty process. Es un proceso que no alberga nada ya, lo usa Android como cache para cuando se crea un proceso nuevo.

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 ().
       OnStart () Llamada cuando la actividad está siendo visible por el usuario. Después de ésta, se puede ir al onResume () si la actividad va a ser visible o se puede ir al onStop () si se esconde.
        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.



No hay comentarios:

Publicar un comentario