En el sistema operativo Android, las aplicaciones están formadas por actividades. Una actividad es un componente que representa algo que un usuario puede hacer en la aplicación, como por ejemplo sacar una fotografía, ver un mapa o marcar un número de teléfono. Una actividad está representada por la clase Activity del framework de desarrollo de Android.
Casi todas las actividades implican interacción con el usuario, por lo que la clase Activity se ocupa automáticamente de crear una ventana que el programador puede colocar en la interfaz de usuario, y le ofrece una superficie sobre la que trabajar para definir su UI. Por regla general son además ventanas a pantalla completa (que ocupan todo el espacio disponible), aunque pueden ser también ventanas flotantes o estar dentro de otras ventanas.
Una de las partes fundamentales de cualquier aplicación móvil en Android es comprender el ciclo de vida de las actividades, y por lo tanto de las ventanas. Según el momento de su ciclo de vida en el que se encuentre una actividad, ésta se encontrará en alguno de diversos estados predefinidos, y tendremos que tenerlo en cuenta para realizar ciertas acciones con ella. Cada actividad es una máquina de estados que cambia de uno a otro en función del entorno y la interacción con el usuario.
Implementar la gestión del ciclo de vida de una Activity es crucial para desarrollar cualquier aplicación. Además no solo debemos considerar su ciclo de vida, sino también el de otras actividades que tenga asociadas, lo que se denomina su task stack y su back stack.
Aparte de los tres estados básicos en los que puede estar una actividad (Resumed, Paused y Stopped) existen unos cuantos más que es importante tener en cuenta para muchos casos particulares. Cada transición entre estados tiene asociado un evento relacionado que podemos interceptar y desde en el que podemos realizar las acciones que sean necesarias. Además, no todas las transiciones son posibles, y hay que conocer las posibilidades. También conviene conocer algunos casos particulares como por ejemplo ¿qué ocurre si una ventana se pone encima de la nuestra pero no la cubre totalmente? ¿Y si es transparente o semi-transparente?.
En el siguiente vídeo, perteneciente a nuestro curso "Xamarin: Desarrollo de aplicaciones Android con C#", nuestro tutor Rubén Rubio nos explica con todo lujo de detalles cuáles son esos estados y todo lo importante relacionado con el ciclo de vida de una aplicación móvil Android. Además realiza un ejemplo práctico que ilustra muy bien todas las posibilidades directamente desde una aplicación Android funcionando en el emulador.
Aunque el vídeo está enfocado en Xamarin y programar para Android con la plataforma .NET, lo explicado es válido para cualquier aplicación Android, aunque esté creada con otro lenguaje, como Java.
La explicación, de algo más de 10 minutos, a continuación: