Bienvenidos sean a este post, hoy hablaremos sobre el ciclo de vida de una app en Android estas a diferencia de las de un S.O. de escritorio en lugar de ser controlada por el usuario son controladas por el sistema, como hemos visto anteriormente un app de Android es un conjunto de actividades que interactuan con el usuario, a su vez pueden utilizar servicios, y estas actividades son las que realmente controlan el ciclo de vida de la app, esto es debido a que el usuario no controla el ciclo de las vida de las mismas porque el usuario no cambia de aplicaciones sino de actividades.
El sistema se encarga de mantener una pila con todas las actividades previamente visualizadas, de esta forma poder regresar simplemente con la tecla retorno. Cuando se inicia una app esta corre dentro de un proceso, y este proceso se mantendra activo hasta que no sea requerido o el sistema reclame su parte de memoria para otra app. El sistema determina por medio del conocimiento que tiene de las partes de la app que estan corriendo, la importancia de las mismas para el usuario y la cantidad de memoria disponible, la posibilidad o no de destruir la app y en caso destruirla y si es vuelta a llamar debera comenzar de nuevo. Por este motivo nosotros como programadores debemos tener esto en cuenta y guardar su estado para que al usuario le resulte transparente el volver a generar el proceso.
Ahora vamos a hablar sobre los posibles estados de nuestra app:

  • Activa (Running), la actividad esta en la cima de la pila y esto significa que esta visible y tiene el foco
  • Visible (Paused), la actividad esta visible pero no esta en foco, esto se logra cuando se pasa a una activada con una parte transparente o no se ocupa toda la pantalla
  • Parada (Stopped), la actividad no es visible, debemos encargarnos de guardar el estado de la interfaz, las preferencias, etc
  • Destruido (Destroyed), la actividad es terminada, puede ser por nosotros por medio de finish() o por el sistema (escasez de memoria)

Pasemos a hablar sobre los eventos que se generan cuando se pasa de un estado a otro:

  • onCreate(Bundle), se llama al crear una actividad, se utiliza para realizar todo tipo de inicializaciones, puede recibir informacion del estado por medio del bundle
  • onStart(), nos indica que la actividad va a ser mostrada al usuario
  • onResume(), se llama cuando la actividad va a comenzar la interaccion con el usuario, es ideal para lanzar las animaciones y musica
  • onPause(), es cuando la actividad esta a punto de pasar a segundo plano, ideal para detener animaciones, musica o almacenar los datos que estaban en edicion
  • onStop(), la actividad no sera visible al usuario pero tengan cuidado porque ante poca memoria la misma podria ser destruida
  • onRestart(), indica cuando la actividad volvera a ser representada despues de haber pasado por onStop()
  • onDestroy(), se usa para destruir la actividad completamente, puede ser por medio del boton retorno, el metodo finish() o destruida por falta de memoria

Para poder ver como trabaja una app haremos una modificacion en nuestra app Asteroides para ello abramos la app con Android Studio para comenzar a realizar algunas modificaciones, para ello vamos a la clase MainActivity y modificaremos el metodo onCreate() agregando la siguiente linea al final del mismo:

Toast.makeText(this,"onCreate",Toast.LENGTH_SHORT).show();

Siguiendo en la clase MainActivity procedamos a agregar los isguientes metodos:

@Override
protected void onStart(){
super.onStart();
Toast.makeText(this,"onStart",Toast.LENGTH_SHORT).show();
}

@Override
protected void onResume(){
super.onResume();
Toast.makeText(this,"onResume",Toast.LENGTH_SHORT).show();
}

@Override
protected void onPause(){
super.onPause();
Toast.makeText(this,"onPause",Toast.LENGTH_SHORT).show();
}

@Override
protected void onStop(){
super.onStop();
Toast.makeText(this,"onStop",Toast.LENGTH_SHORT).show();
}

@Override
protected void onRestart(){
super.onRestart();
Toast.makeText(this,"onRestart",Toast.LENGTH_SHORT).show();
}

@Override
protected void onDestroy(){
super.onDestroy();
Toast.makeText(this,"onDestroy",Toast.LENGTH_SHORT).show();
}

Con estas modificaciones realizadas podemos probar nuestra app y obtendremos el siguiente resultado:

En el video podemos ver como cuando pasamos a una actividad distinta de MainActivity nos muestra el estado de la misma, esta es la forma como trabaja Android con cada una de las actividades de nuestras apps cargadas en memoria.
En resumen, hoy hemos visto que son y como se llaman los ciclos de vida de una actividad, cuales son los eventos relacionados a las mismas, hemos hecho una pequeña modificacion en Asteroides para poder ver como se intercambian entre los mismos estados, espero les haya sido util sigueme en Twitter, Facebook o Google+ para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Anuncios