Programación Android, ciclo de vida de una app

Share if you like...Share on Facebook0Tweet about this on TwitterShare on Google+0Share on LinkedIn0

Creación de una actividad

Las actividades en Android son clases públicas que representan cada una de las pantallas de nuestra aplicación y que heredan de la clase base android.app.Activity mediante la palabra reservada extends.
Cuando se crea la actividad en el entorno Eclipse, se crea por defecto el método onCreate(). Toda actividad sobrescribe este método, que es el punto inicial del ciclo de vida de una actividad, y es invocado cuando la actividad se inicia. Además, la mayoría de las actividades también deben implementar el método onPause(), donde se guardan datos y el estado antes de que la actividad deje de ser visible. El estado de la actividad se almacena en un objeto de la clase Bundle, que contiene el estado anterior de la actividad en caso de que haya sido suspendida.
Según el ciclo de vida de una actividad, después de iniciar una actividad se puede pausar o detener de forma momentánea si el usuario está realizando otras funciones en el teléfono. si esto ocurre, la actividad deberá iniciarse nuevamente, y es entonces cuando la información de este Bundle es útil.

Ciclo de vida de las actividades

Las aplicaciones Android funcionan con un ciclo de vida controlado por el propio sistema operativo. Este ciclo de vida depende de la situación en que se encuentre en cada momento la aplicación. Desde que se crea hasta que se destruye, sus actividades (Activity) pueden encontrarse en distintos estados. Se considera de interés para cualquier proyecto conocer los ciclos de vida, ya que deberemos programar los métodos necesarios para que nuestra aplicación funcione correctamente.
Ciclo de Vida Android

  • Activa (Running): Está la primera en la pila de ejecución, el usuario ve la actividad y puede interactuar con ella.
  • Pausada (Paused): Ha pasado a segundo plano pero aún está visible porque otra actividad se coloca sobre ella pero no la tapa del todo. En este caso la actividad tapada puede ser cerrada por el sistema si necesita liberar recursos para la nueva actividad.
  • Parada (Stopped): Ha pasado a segundo plano y está completamente tapada por la nueva actividad, en ese caso el sistema también puede optar por cerrarla si necesita liberar recursos.
  • Destruida (Destroyed): Ya no está disponible, se han liberado todos sus recursos y en caso de ser llamada necesitaría comenzar un nuevo ciclo de vida.

Cuando el estado de una Activity está cambiando es notificado por el sistema operativo, que hace una llamada a los métodos específicos de esa Activity. El siguiente diagrama ilustra los métodos y sus nombres:

Ciclo_vida_Actividad1

onCreate

Este método se llama al crear una Activity. Una Activity debe reemplazar este método para configurar su pantalla principal y realizar cualquier otra configuración inicial, como la creación de vistas, el enlace de datos a las listas, etc. Este método proporciona un parámetro Bundle, que es un diccionario para almacenar y transmitir información de estado y de los objetos entre las actividades. Si el paquete no es nulo, esto indica que la actividad se reanuda y puede ser reiniciada. Las Activity también pueden hacer uso del contenedor Extras del objeto Intent para restaurar los datos guardados anteriormente o los datos que se pasa entre los Activity. Por ejemplo, en el código siguiente se muestra cómo recuperar los valores del conjunto, y también la manera de recuperar los valores del contenedor Extras:


protected override void onCreate(Bundle bundle) {
	base.onCreate(bundle);
	String intentString, extraString;
	boolean intentBool, extraBool;

	if (bundle != null) {
		// Si la actividad es resumida...
		intentString = bundle.getString("myString");
		intentBool = bundle.getBoolean("myBool");
	}

	// Chequea los valores de los extras del Intent
	extraString = Intent.getExtras.getString("myString");
	extraBool = Intent.getExtras.getBoolean("myBool", false);

	// Establecer la vista a partir del layout "main" de los recursos
	setContentView(R.Layout.main);
}

onStart

Este método se llama cuando la Activity está a punto de ser visible para el usuario. Las Activities deben reemplazar este método si necesitan realizar cualquier tarea específica justo antes de que se hagan visibles, como por ejemplo refrescar valores actuales de los valores de las vistas dentro de la actividad, o de puente para frame rates (una tarea común en la construcción de juegos).

onPause

Este método se llama cuando el sistema está a punto de poner la Activity en background. Las Activities deben reemplazar este método si necesitan confirmar los cambios no guardados a los datos persistentes, destruir o limpiar objetos para liberar los recursos que consumen, etc. Las implementaciones de este método deben finalizar lo antes posible, ya que ninguna Activity sucesiva se reanudará hasta que este método devuelve un valor. El siguiente ejemplo muestra cómo reemplazar el método onPause para guardar los datos en el contenedor de Extras, para habilitar que los datos sean pasados entre las Activities:

protected override void onPause() {
	Bundle b = new Bundle();
	b.putString("myString", "Hola desde el estado Android onPause");
	b.putBoolean("myBool", true);
	Intent.putExtras(b);
	base.onPause();

onResume

Este método se llama cuando la Activity va a empezar a interactuar con el usuario después de estar en un estado de pausa. Cuando este método se llama, la Activity se está moviendo a la parte superior de la pila y está recibiendo actividad del usuario. Las Activities pueden reemplazar este método si lo necesitan para realizar cualquier tarea después de que la Activity haya aceptado la interacción del usuario.

onStop

Este método se llama cuando la Activity ya no es visible para el usuario, ya que otra Activity se ha reanudado o iniciado y está eclipsando a esta. Esto puede suceder porque la Activity ha finalizado (el método de finalización fue llamado), porque el sistema está destruyendo a esta instancia de Activity para ahorrar recursos, o porque un cambio de orientación se ha producido en el dispositivo. Se puede distinguir entre estos escenarios mediante el uso de la propiedad isFinishing. Un Activity debe reemplazar este método si es necesario para realizar las tareas específicas antes de ser destruido, o si se trata de una interfaz de usuario para iniciar la reconstrucción después de un cambio de orientación.

onRestart

Este método se llama después de que una Activity se haya detenido, antes de que se inicie de nuevo. Este método siempre es seguido por onStart. Una Activity debe pasar por onRestart si es necesario para realizar las tareas inmediatamente antes de llamar a onStart. Por ejemplo, si la actividad previamente ha sido enviada al background y onStop ha sido llamada, pero el proceso de la Activity aún no ha sido destruido por el sistema operativo, entonces el método onRestart debe ser anulado.
Un buen ejemplo de esto sería cuando el usuario presiona el botón de inicio cuando aún había una Activity en la aplicación. El onPause, y a continuación el onStop, son llamados, pero la actividad no se destruye. Si el usuario a continuación restaurara la aplicación mediante el administrador de tareas o una aplicación similar, el método onRestart de la actividad sería llamado por el sistema operativo, durante la reactivación de actividades.

onDestroy

Este es el último método que se llama en una Activity antes de que sea destruido. Después de llamar a este método, su Activity se matará y será purgado de los grupos de recursos del dispositivo. El sistema operativo se destruirán permanentemente los datos de estado de una Activity después de que este método se haya ejecutado, por lo que una Activity debe reemplazar este método como medio final para salvar los datos del estado.

onSaveInstanceState

Este método es proporcionado por el ciclo de vida de Android para dar a una Activity la oportunidad de guardar los datos cuando se produce un cambio, por ejemplo un cambio de orientación de pantalla. El código siguiente muestra cómo las Activities pueden reemplazar el método onSaveInstanceState para guardar los datos para la rehidratación cuando el método onCreate se llama:

protected override void onSaveInstanceState(Bundle outState) {
	outState.putString("myString", "Hola desde el estado Android onSaveInstanceState");
	outState.putBoolean("myBool", true);
	base.onSaveInstanceState();
}
Share if you like...Share on Facebook0Tweet about this on TwitterShare on Google+0Share on LinkedIn0
The following two tabs change content below.
Reborn as IT Developer. Desarrollador Android y fundador de Proyecto Simio. "En realidad, yo no puedo enseñar nada a nadie, sólo puedo hacerles pensar." - Sócrates.

Deja un comentario