¿Qué es el ciclo de vida de la actividad de Android?

En mi publicación anterior, aprendiste que los Intentos nos permiten enviar mensajes de un componente de Android a otro. Bueno, un tipo de componente muy importante es una Actividad.. 

Las actividades son una parte fundamental del desarrollo de aplicaciones para Android. Y es imposible entender las Actividades sin comprender también sus ciclos de vida. En este post, aprenderás todo sobre el ciclo de vida de la actividad..

Ciclo de vida de la actividad

Una Actividad es una sola pantalla en Android. Es como una ventana en una aplicación de escritorio, o un marco en un programa Java. Una Actividad le permite colocar todos sus componentes de UI o widgets juntos en la pantalla.

Es importante entender que una Actividad tiene un ciclo de vida: es decir, puede estar en uno de varios estados diferentes, dependiendo de lo que esté sucediendo con la aplicación y con la interacción del usuario.. 

Métodos de ciclo de vida

Veamos más de cerca el ciclo de vida de una actividad de Android. Cada vez que cambie el estado de la actividad, se llamará a uno de los siguientes métodos de ciclo de vida en la clase de actividad. 

onCreate (): Esto se llama cuando la actividad se inicializa por primera vez. Debe implementar este método para realizar una inicialización específica de su actividad..

onStart (): Esto se denomina la primera vez que la Actividad está a punto de hacerse visible para el usuario, ya que la Actividad se prepara para pasar al primer plano y se vuelve interactiva. Una vez finalizada esta devolución de llamada, el En resumen() se llamará método.

En resumen(): Cuando la Actividad entra en este estado, comienza a interactuar con el usuario. La Actividad continúa en este estado hasta que suceda algo que se centre en la aplicación o la Actividad (como una llamada entrante). Cuando esto sucede, el en pausa () se llamará método.

en pausa (): Este método se utiliza para pausar las operaciones que no deberían ocurrir cuando la actividad está en estado de pausa. Una llamada a este método indica que el usuario está abandonando la aplicación. Por ejemplo, en una aplicación de reproductor de música, una llamada entrante hará que la aplicación pase a un estado de pausa. Esto debería silenciar o pausar la música que se está reproduciendo actualmente. Cuando el usuario vuelve a la aplicación, el En resumen() se llamará método.

onStop (): Este método se llama cuando la actividad ya no es visible en la aplicación. Puede suceder, por ejemplo, cuando se ha cargado otra Actividad y está tomando la pantalla completa del dispositivo. Cuando se llama a este método, se dice que la Actividad está en un estado detenido. En este estado, el sistema llama al onRestart () Para volver a la interactividad con la actividad. O llama al onDestroy () Método para destruir la actividad..

onDestroy (): Esto se llama antes de que se destruya la actividad. El sistema llama a este método cuando un usuario termina la Actividad, o porque el sistema está destruyendo temporalmente el proceso que contiene la Actividad para ahorrar espacio. Asegúrese de liberar todos los recursos que su Actividad haya creado con este método, o de lo contrario su aplicación tendrá una pérdida de memoria!

onRestart (): Esto se llama cuando una actividad se reinicia después de que se haya detenido.

Comenzando una actividad

La mayoría de las interacciones de los usuarios con una aplicación hacen que se modifique la Actividad activa. Así que una aplicación transita entre Actividades muchas veces durante su vida útil..

Es necesario vincular Actividades cuando una Actividad necesita comenzar otra. Para iniciar una actividad, o bien utiliza startActivity () o startActivityForResult (). Tienes que pasar una Intención en cualquier caso..

Comenzando una actividad sin resultado esperado

startActivity () se utiliza si la Actividad recién iniciada no necesita devolver un resultado.

El siguiente fragmento de código muestra cómo iniciar otra actividad utilizando este método:

Intención intención = nueva Intención (this, SecondActivity.class); startActivity (intención);

También puede realizar acciones como pasar datos de una actividad a otra. En este caso, su Actividad actual (la Actividad de llamada) quiere pasar datos a una Actividad de destino. Aquí es donde los intentos son útiles. Para aprender sobre cómo usar Intents para comenzar una actividad, echa un vistazo a mi artículo anterior.

Comenzando una actividad con un resultado

startActivityForResult () se utiliza para iniciar otra actividad y espera recuperar datos de la nueva actividad iniciada. En otras palabras, use esto cuando desee obtener un resultado de la Actividad objetivo de la Actividad de llamada, por ejemplo. Si la actividad de destino está recopilando información del usuario en un diálogo modal..

Recibes el resultado de la Actividad en el onActivityResult (int requestCode, int resultCode, Intent data) método. El resultado será devuelto como Intención..

Ejemplo de inicio de una actividad

Aquí hay un ejemplo para mostrar cómo se inicia una actividad..

Primero, creas tu Actividad principal con tu onCreate () Método, un archivo de diseño y un código de solicitud..

 clase pública MainActivity extiende la Actividad // Código de solicitud único para cada caso de uso privado estático final int REQUEST_CODE_EXAMPLE = 0x9345; @Override protected void onCreate (Bundle savedInstanceState) super.onCreate (savedInstanceState); setContentView (R.layout.activity_main); 

En tus onCreate () Método, creará una nueva instancia de un intento de iniciar su segunda actividad.. 

Cuando esté listo para comenzar esa actividad, diga en respuesta a un clic de botón, llamará startActivityForResult (), que pasará la intención recién creada y el código de solicitud.

 // Crear una nueva instancia de Intent para iniciar SecondActivity final Intent intent = new Intent (this, SecondActivity.class); // Esto inicia SecondActivity con el código de solicitud startActivityForResult (intención, REQUEST_CODE_EXAMPLE);

Aun así, en tu Actividad principal, necesitas manejar los eventos de resultados de la actividad. Usted hace esto implementando el onActivityResult ()  método. Así es como recibirás el resultado de la otra actividad.. 

Así es como debe verse:

 // onActivityResult solo recibe una llamada // cuando la otra Actividad comenzó previamente a usar startActivityForResult @Override public void onActivityResult (int requestCode, int resultCode, Intent data) super.onActivityResult (requestCode, resultCode, data); // Primero debemos verificar si el código de solicitud coincide con el que usamos. if (requestCode == REQUEST_CODE_EXAMPLE) // El resultCode se establece con SecondActivity // Por convenio RESULT_OK significa que cualquier // SecondActivity se ejecutó correctamente si (resultCode == Activity.RESULT_OK) // Obtiene el resultado del resultado Intención final String result = data.getStringExtra (SecondActivity.EXTRA_DATA); // Usar los datos, en este caso, mostrarlos en un Toast. Toast.makeText (esto, "Resultado:" + resultado, Toast.LENGTH_LONG) .show ();  else // setResult no fue ejecutado exitosamente por SecondActivity // Debido a algún error o flujo de control. No hay datos para recuperar. 

Ahora ve y crea tu SecondActivity. Debería verse como el código de abajo.

 @Override protected void onCreate (Bundle savedInstanceState) super.onCreate (savedInstanceState); setContentView (R.layout.activity_detail); Botón del botón final = (Botón) findViewById (R.id.button); // Cuando se hace clic en este botón, queremos devolver un botón button.setOnClickListener (new View.OnClickListener () @Override public void onClick (View view) // Crear un nuevo objeto Intent como contenedor para el resultado final Intent data = new Intent (); // Agregue los datos requeridos que se devolverán a MainActivity data.putExtra (EXTRA_DATA, "¡Algunos datos interesantes!"); // Establezca el código de resultado como Activity.RESULT_OK para // indicar un éxito y adjunte el Intent // que contiene nuestros datos de resultados setResult (Activity.RESULT_OK, data); // Con finish () cerramos la SecondActivity para // regresar a MainActivity finish ();); 

Terminando una actividad

Antes de que finalice una actividad, se llamarán los métodos de ciclo de vida correspondientes.

los en pausa () El método debe detener todos los oyentes y las actualizaciones de la interfaz de usuario. los onStop () El método debe guardar los datos de la aplicación. Finalmente, el onDestroy () El método liberará cualquier recurso que la actividad haya asignado.. 

Cuando el usuario cambia de nuevo a una aplicación que ha sido terminada por el sistema, el En resumen() se llama metodo En función de los datos guardados, puede volver a registrar escuchas y activar actualizaciones de la interfaz de usuario.

Estado de instancia de actividad

Una Actividad necesita una forma de mantener los valiosos datos de estado y usuario que ha obtenido. Estos datos pueden obtenerse de la entrada del usuario o crearse mientras la Actividad no estaba en pantalla.

Por ejemplo, un cambio de orientación del dispositivo puede causar que una Actividad se destruya y se vuelva a crear. En tal escenario, debe asegurarse de guardar todo el estado de la Actividad antes de que se destruya y volver a cargarlo cuando se vuelva a crear. De lo contrario, cualquier dato que tenga su Actividad en ese momento se puede perder por completo..

Para guardar el estado de actividad, puede anular la onSaveInstanceState () método. Este método se pasa un Haz Objeto como parámetro. Un paquete puede contener cadenas, tipos de datos primitivos u objetos. En este método, simplemente agregue cualquier dato de estado importante al paquete. Este paquete volverá a la Actividad más adelante para que pueda restaurar el estado de la Actividad..

Para extraer el estado guardado del paquete y restaurarlo, implemente el onRestoreInstanceState () método. Esta devolución de llamada se invoca entre onStart () y el En resumen() métodos de ciclo de vida.

En un futuro artículo, analizaremos el estado de la instancia de actividad..

Conclusión

Después de seguir esta publicación, comprenderá bien cómo funciona el ciclo de vida de una actividad. Y ha aprendido que hay dos formas de iniciar una actividad, además de obtener algunos consejos sobre cómo se maneja el estado de la instancia en el ciclo de vida de la actividad..

Gracias por leer, y mientras esté aquí, consulte algunas de nuestras otras publicaciones sobre codificación de aplicaciones de Android.