Android. Segunda Parte. Ciclo de vida de las activities
1.1. Presentación
Esta ejercicio es una introducción al desarrollo de aplicaciones Android.
1.2. Competencias
Se trabajarán las siguientes competencias:
Capacidad para programar aplicaciones para dispositivos Android.
Capacidad para integrar las APIs y servicios de Google, como por ejemplo el servicio de mapas.
1.3. Objetivos
Los objetivos son que el estudiante aprenda a:
Conocer el ciclo de vida de las activities de una aplicación.
Crear y codificar las activities de una aplicación.
Enviar datos entre activities de una aplicación.
Crear y codificar archivos XML que definen la interfaz gráfica de la aplicación.
Integrar los servicios y las funcionalidades de los mapas que ofrece Google a través de Google Maps API v2.
Utilizar el GPS para posicionar el dispositivo móvil.
Utilizar persistencia de datos mediante los SharedPreferences.
1.4 Ejercicios
GitHub
El objetivo de este ejercicio es entender el ciclo de vida de las activities. Se ha creado un proyecto en GitHub (plataforma de desarrollo colaborativo de software para almacenar proyectos utilizando el sistema de control de versiones Git) que os podréis descargar siguiendo los siguientes pasos:
Abrir Android Studio.
Ir a la pestaña
VCS > Checkout from version control > GitHub
O si no tenéis ningún proyecto abierto, directamente desde el Quick Start elegid la opción
Checkout from version control > GitHub
Una vez seleccionado, en la opción Vcs Repository URL escribid la siguiente URL y elegid la ubicación de destino.
Una vez abierto el proyecto, ejecútalo en el emulador/dispositivo móvil y responde las siguientes preguntas:
Explica cuáles son los diferentes estados de una activity y cuando se produce cada uno de estos estados (ver apartado 2.1 de la wiki).
Primero de todo, en mi caso he tenido que realizar una instalación del Git para poder exportar el proyecto. Para realizar esta tarea instale del siguiente enlace el programa git.exe. Una vez finalizada esta instalación añado la ruta de la aplicación GIT como se muestra en la figura [3] .
Si aplicamos el test, podremos observar que, si hemos realizado correctamente la instalación aparece el mensaje de la figura [4]
Una vez este problema ha sido solucionado, descargo la aplicación y podemos explicar cual es el estado de una Activity.
Primero de todo, para analizar los estados que posee una Activity debemos conoces su definición. Una aplicación en Android va a estar formada por un conjunto de elementos básicos de interacción con el usuario, conocidos como activities. Además, las activities estan compuestas por los siguientes métodos:
onCreate(): se llama cuando se crea la activity. Se utiliza para realizar todo tipo de inicializaciones, como la creación de la interfaz de usuario o la inicialización de estructuras de datos.
onResume(): Se llama cuando la actividad va a comenzar a interactuar con el usuario. Es un buen lugar para lanzar las animaciones y la música.
onStart(): se llama cuando la activity es visible para el usuario. Indica que la actividad va a volver a ser representada después de haber pasado por onStop().
onPause(): se llama cuando se pausa la activity. Luego se puede volver a llamar.Es el lugar adecuado para detener animaciones, música o almacenar los datos que estaban en edición.
onStop(): se llama cuando la activity deja de ser visible para el usuario. Ojo si hay muy poca memoria, es posible que la actividad se destruya sin llamar a este método.
onDestroy(): se llama justo antes de que la activity sea destruida por el sistema. Por ejemplo, cuando el usuario pulsa el botón de volver o cuando se llama al método finish(). Ojo si hay muy poca memoria, es posible que la actividad se destruya sin llamar a este método.
onRestart(): se llama cuando la activity se ha detenido y se vuelve a reiniciar.
Los diferentes tipos de estados de una Activity son los siguientes:
Activa (Running): La actividad está encima de la pila, lo que quiere decir que es visible y tiene el foco.
Visible (Paused): La actividad es visible pero no tiene el foco. Se alcanza este estado cuando pasa a activa otra actividad con alguna parte transparente o que no ocupa toda la pantalla. Cuando una actividad está tapada por completo, pasa a estar parada.
Parada (Stopped): Cuando la actividad no es visible. El programador debe guardar el estado de la interfaz de usuario, preferencias, etc.
Destruida (Destroyed): Cuando la actividad termina al invocarse el método finish(), o es matada por el sistema.
Cada vez que una actividad cambia de estado se van a generar eventos que podrán ser capturados por ciertos métodos de la actividad. A continuación se muestra un esquema que ilustra los métodos que capturan estos eventos.
Mediante la ayuda de Logs, identifica por qué estados pasa cada activity en los siguientes casos:
Cuando la aplicación se abre por primera vez.
onCreate
onStart
onResume
Cuando pasamos de la activity A a la B.
onPause ActivityA
onCreate ActivityB
onStart ActivityB
onResume ActivityB
onStop ActivityA
Cuando volvemos atrás utilizando el botón back (B A).
onPause ActivityB
onRestart ActivityA
onStart ActivityA
onResume ActivityA
onStop ActivityB
onDestroy ActivityB
Cuando se abre el diálogo estando a cualquier activity y después lo cerramos.
onPause ActivityA
onResume ActivityA
¿Qué tendríamos que modificar para hacer que la activity C sea la que se ejecuta por primera vez cuando abrimos la aplicación.
El cambio que aparece en la figura [10] marcada en el circulo color verde. Indicamos en el archivo Manifest.xml que la Activity C será la primera en ser lanzada y la Activity A pasa a ser únicamente una actividad más.
¿Para qué sirven los intents? ¿Qué tipos hay? ¿Qué tipo se utiliza en este ejercicio para cambiar de pantallas?
Los intents ofrecen un servicio de paso de mensajes que permite interconectar componentes de la misma o de distintas aplicaciones. Normalmente, se utilizan para invocar una nueva actividad o para enviar eventos a múltiples actividades (llamados broadcast intents). Los intents son gestionados por los receptores de eventos o broadcast receivers, que pueden escuchar a cualquier intent.
Sus atributos son los siguientes:
El nombre del componente que queremos avisar. Por ejemplo, la aplicación de correo electrónico.
La acción que se quiere lanzar. Por ejemplo, editar, llamar, sincronizar, información de batería baja, etc.
Los datos sobre la acción. Por ejemplo, escribir un nuevo correo.
La información extra. La dirección de correo del destinatario y el título.
Existen dos tipos de intenciones:
Intenciones explícitas: se indica exactamente el componente a lanzar. Su utilización típica es la de ir ejecutando los diferentes componentes internos de una aplicación.
Intenciones implícitas: Es la plataforma la que determina, mediante el proceso de resolución de intenciones, qué componente es el más apropiado para manejar
el intent.
Respecto a como se utilizan los intents podemos definir los siguientes casos
Lanzar una actividad (startActivity() y startActivityForResult())
Lanzar un servicio (startService())
Lanzar un anuncio de tipo broadcast (sendBroadcast())
Conectarnos con un servicio (bindService())
En nuestro programa utilizamos el intent para lanzar una Actividad.
Bibliografía
1.Titulo
Ciclo de vida de una actividad
Autor
Jesús Tomás. Diploma de Especialización en desarrollo de aplicaciones para Android. Universidad Politécnica de Valencia