tema 4.4 actividades
TRANSCRIPT
![Page 1: Tema 4.4 Actividades](https://reader033.vdocuments.site/reader033/viewer/2022052214/55889906d8b42a317d8b46ec/html5/thumbnails/1.jpg)
Análisis y Diseño de Software
Departamento de Ingeniería de Sistemas Telemáticoshttp://moodle.dit.upm.es
Carlos A. Iglesias <[email protected]>1.0 19/04/2013
Actividades
![Page 2: Tema 4.4 Actividades](https://reader033.vdocuments.site/reader033/viewer/2022052214/55889906d8b42a317d8b46ec/html5/thumbnails/2.jpg)
Actividades 2
Temario● 4.1 Introducción a Android ● 4.2 Introducción Desarrollo con Android
● 4.3 Ejemplo Desarrollo y Depuración ● 4.4 Actividades● 4.5 Interfaces de Usuario
● 4.6 Intenciones● 4.7 Acceso a Datos● 4.8 Preferencias● 4.9 Hebras e internacionalización
![Page 3: Tema 4.4 Actividades](https://reader033.vdocuments.site/reader033/viewer/2022052214/55889906d8b42a317d8b46ec/html5/thumbnails/3.jpg)
Desarrollo con Android 3
Teoría
Ejercicio práctico en el ordenador
Ampliación de conocimientos
Lectura / Vídeo / Podcast
Práctica libre / Experimentación
Leyenda
![Page 4: Tema 4.4 Actividades](https://reader033.vdocuments.site/reader033/viewer/2022052214/55889906d8b42a317d8b46ec/html5/thumbnails/4.jpg)
Actividades 4
Bibliografía
● Android Developers– http://developer.android.com/training/basics/activity-lifecycle
/index.html– http://docs.huihoo.com/android/3.0/guide/topics/fundamental
s/activities.html
![Page 5: Tema 4.4 Actividades](https://reader033.vdocuments.site/reader033/viewer/2022052214/55889906d8b42a317d8b46ec/html5/thumbnails/5.jpg)
Actividades 5
Objetivos
● Entender qué es una Actividad
● Entender el ciclo de vida de una actividad
![Page 6: Tema 4.4 Actividades](https://reader033.vdocuments.site/reader033/viewer/2022052214/55889906d8b42a317d8b46ec/html5/thumbnails/6.jpg)
Actividades 6
Actividad
● En Android no hay una clase con un main como en Java
● Las actividades son el componente principal en Android
● Una aplicación se compone de un conjunto de actividades (pantallas), de las que una es la principal (MAIN) que es la que comienza
![Page 7: Tema 4.4 Actividades](https://reader033.vdocuments.site/reader033/viewer/2022052214/55889906d8b42a317d8b46ec/html5/thumbnails/7.jpg)
Actividades 7
Pila de Actividades
![Page 8: Tema 4.4 Actividades](https://reader033.vdocuments.site/reader033/viewer/2022052214/55889906d8b42a317d8b46ec/html5/thumbnails/8.jpg)
Actividades 8
Pila de Actividades
● A medida que el usuario navega, las actividades cambian de estado: se inician, son visibles, se paran, se terminan, … el sistema Android notifica a la actividad mediante métodos 'callback' (onCreate, ...)
![Page 9: Tema 4.4 Actividades](https://reader033.vdocuments.site/reader033/viewer/2022052214/55889906d8b42a317d8b46ec/html5/thumbnails/9.jpg)
Actividades 9
Estados de una actividad
● Una actividad tiene 3 estados básicos:– Resumed (reanudada): actividad en primer
plano con la que interactúa el usuario– Paused (pausada): actividad semi-visible en
segundo plano, parcialmente tapada por otra actividad que está en primer plano que no ocupa toda la pantalla; la actividad pausada no permite interacción ni ejecuta código
– Stopped (parada), actividad de fondo, completamente oculta y no ejecuta código
![Page 10: Tema 4.4 Actividades](https://reader033.vdocuments.site/reader033/viewer/2022052214/55889906d8b42a317d8b46ec/html5/thumbnails/10.jpg)
Actividades 10
Pirámide de estados
● Con cada llamada a un método de callback cambiamos de estado
● Hay estados transitorios: Created, Started
![Page 11: Tema 4.4 Actividades](https://reader033.vdocuments.site/reader033/viewer/2022052214/55889906d8b42a317d8b46ec/html5/thumbnails/11.jpg)
Actividades 11
Ejemplo ActivityLifecycle (I)
Debería ser stopped, es una optimización de
Android
![Page 12: Tema 4.4 Actividades](https://reader033.vdocuments.site/reader033/viewer/2022052214/55889906d8b42a317d8b46ec/html5/thumbnails/12.jpg)
Actividades 12
Ejemplo ActivityLifecycle (II)
![Page 13: Tema 4.4 Actividades](https://reader033.vdocuments.site/reader033/viewer/2022052214/55889906d8b42a317d8b46ec/html5/thumbnails/13.jpg)
Actividades 13
Tiempo de vida de la actividad (I)
Actividad visible (segundo plano)
Actividad visible y activa (primer plano)
Actividad viva
![Page 14: Tema 4.4 Actividades](https://reader033.vdocuments.site/reader033/viewer/2022052214/55889906d8b42a317d8b46ec/html5/thumbnails/14.jpg)
Actividades 14
Tiempo de vida de la actividad (II)
● Tiempo de vida completo (actividad viva): entre onCreate() y onDestroy()– Se crean los recursos y se liberan
● Tiempo de vida visible: entre onStart() y onStop()– Es visible pero puede no estar en primer plano– Pueden llamarse múltiples veces a onStart() / onStop()– Estos métodos deben mantener los recursos que se necesitan para
visualizar la interfaz
● Tiempo de vida activa: entre onResume() y onPause()– Es visible y está en primer plano, se puede interactuar con ella– Puede llamarse muchas veces a onPause() / onResume()
![Page 15: Tema 4.4 Actividades](https://reader033.vdocuments.site/reader033/viewer/2022052214/55889906d8b42a317d8b46ec/html5/thumbnails/15.jpg)
Actividades 15
Ejemplo Actividad
![Page 16: Tema 4.4 Actividades](https://reader033.vdocuments.site/reader033/viewer/2022052214/55889906d8b42a317d8b46ec/html5/thumbnails/16.jpg)
Actividades 16
Actividad en Manifest.xml (I)
● En el fichero Manifest.xml deben estar declaradas las actividades de la aplicación
● La actividad inicial debe tener un intent-filter con acción MAIN y categoría LAUNCHER
![Page 17: Tema 4.4 Actividades](https://reader033.vdocuments.site/reader033/viewer/2022052214/55889906d8b42a317d8b46ec/html5/thumbnails/17.jpg)
Actividades 17
Actividad en Manifest.xml (II)
Nombre clase de la actividad,
continúa la propiedad package
Indica que es la actividad inicial
que se lanza
![Page 18: Tema 4.4 Actividades](https://reader033.vdocuments.site/reader033/viewer/2022052214/55889906d8b42a317d8b46ec/html5/thumbnails/18.jpg)
Actividades 18
Crear Actividad
● El sistema llama en secuencia a onCreate(), onStart(), onResume()
![Page 19: Tema 4.4 Actividades](https://reader033.vdocuments.site/reader033/viewer/2022052214/55889906d8b42a317d8b46ec/html5/thumbnails/19.jpg)
Actividades 19
onCreate()● onCreate(Bundle savedInstanceState) ● Es el único método que siempre debemos implementarlo ● Llamado cuando se inicia la actividad● A continuación el sistema llama a onStart() y onResume()● Qué debe hacer
– Llamar a super.onCreate(savedInstanceState) para recuperar estado anterior de la actividad si fue destruida
– Inicializar los componentes de la actividad– Llamar a setContentView() para definir el layout de la actividad
![Page 20: Tema 4.4 Actividades](https://reader033.vdocuments.site/reader033/viewer/2022052214/55889906d8b42a317d8b46ec/html5/thumbnails/20.jpg)
Actividades 20
onStart()
● Se ejecuta tras onCreate() justo cuando la actividad pasa a ser visible para el usuario
● Le sigue onResume() si la actividad pasa a primer plano o de onStop() si se oculta
● Qué debe hacer– Actualiza recursos de interfaz que va a ser
visible
![Page 21: Tema 4.4 Actividades](https://reader033.vdocuments.site/reader033/viewer/2022052214/55889906d8b42a317d8b46ec/html5/thumbnails/21.jpg)
Actividades 21
onResume()
● La actividad pasa a primer plano
● Siempre le sigue onPause()
● Qué debe hacer– Si se pausaron hebras, deben volverse a
ejecutar– Si hacemos algo que lleva un cierto tiempo
![Page 22: Tema 4.4 Actividades](https://reader033.vdocuments.site/reader033/viewer/2022052214/55889906d8b42a317d8b46ec/html5/thumbnails/22.jpg)
Actividades 22
Pausar y reanudar una Actividad
● Otra actividad pasa a primer plano, pero la actividad permanece parcialmente visible
![Page 23: Tema 4.4 Actividades](https://reader033.vdocuments.site/reader033/viewer/2022052214/55889906d8b42a317d8b46ec/html5/thumbnails/23.jpg)
Actividades 23
onPause()● El sistema va a iniciar otra actividad
● Qué debe hacer– Guardar cambios de estado para hacerlos persistentes sólo si
el usuario espera que se autoguarden – Parar animaciones u otras acciones que consuman CPU
– Liberar recursos que puedan afectar al uso de batería (GPS, cámara, ...)
● Debe ser un método rápido para que podamos pasar rápido a la siguiente actividad (o llamada telefónica o...)
![Page 24: Tema 4.4 Actividades](https://reader033.vdocuments.site/reader033/viewer/2022052214/55889906d8b42a317d8b46ec/html5/thumbnails/24.jpg)
Actividades 24
onResume()
● Llamado si el usuario reanuda la actividad que está en pausa
● Qué debe hacer– Inicializar los componentes que se liberaron en
onPause()– Reiniciar animaciones, etc. que se pararon en
onPause()
![Page 25: Tema 4.4 Actividades](https://reader033.vdocuments.site/reader033/viewer/2022052214/55889906d8b42a317d8b46ec/html5/thumbnails/25.jpg)
Actividades 25
Parar y reiniciar una Actividad
● La actividad puede ser parada o reiniciada cuando..– El usuario selecciona otra aplicación en
aplicaciones recientes– El usuario pulsa “Back” para regresar a la
actividad anterior– El usuario recibe una llamada telefónica
![Page 26: Tema 4.4 Actividades](https://reader033.vdocuments.site/reader033/viewer/2022052214/55889906d8b42a317d8b46ec/html5/thumbnails/26.jpg)
Actividades 26
Parar y reiniciar una actividad
● Métodos para parar/reiniciar: onStop() / onRestart() / onStart() / onResume()
![Page 27: Tema 4.4 Actividades](https://reader033.vdocuments.site/reader033/viewer/2022052214/55889906d8b42a317d8b46ec/html5/thumbnails/27.jpg)
Actividades 27
onStop()
● La actividad es parada y ya no es visible
● El sistema puede llamar a onDestroy() si necesita memoria
● Es llamado tras un onPause()
● Qué debe hacer– Realizar operaciones intensivas en CPU para
guardar el estado, como escribir en base de datos
![Page 28: Tema 4.4 Actividades](https://reader033.vdocuments.site/reader033/viewer/2022052214/55889906d8b42a317d8b46ec/html5/thumbnails/28.jpg)
Actividades 28
onRestart()
● Llamado cuando una actividad parada se reinicia, y luego llama a onStart()
● Poco habitual reescribirlo
● Qué debe hacer– Reiniciar recursos que fueron destruidos en
onStop()
![Page 29: Tema 4.4 Actividades](https://reader033.vdocuments.site/reader033/viewer/2022052214/55889906d8b42a317d8b46ec/html5/thumbnails/29.jpg)
Actividades 29
onDestroy()● Llamado para liberar el objeto de la actividad● Normalmente habremos liberado todo en onStop() y no
tendremos que usarlo● Puede destruirla el sistema o nosotros invocando finish()● Si se cambia la configuración de la Actividad (orientación
pantalla, teclado, idioma, …) la actividad se destruye y reinicia● Qué debe hacer:
– Liberar recursos que no hemos liberado antes (p.ej. Hebras), pero improbable
– Guardar cambios en configuración (isConfigurationchange()) para reiniciar con esos cambios
![Page 30: Tema 4.4 Actividades](https://reader033.vdocuments.site/reader033/viewer/2022052214/55889906d8b42a317d8b46ec/html5/thumbnails/30.jpg)
Actividades 30
Estados 'matables' - killable
● Las actividades que están en un estado 'matable' pueden ser terminadas por el sistema en cualquier momento
● Estados matables: onPause(), onStop(), onDestroy()
● Sólo se garantiza que se va a llamar a onPause() antes de matar la actividad
![Page 31: Tema 4.4 Actividades](https://reader033.vdocuments.site/reader033/viewer/2022052214/55889906d8b42a317d8b46ec/html5/thumbnails/31.jpg)
Actividades 31
Recrear una actividad
● Cuando el sistema destruye una actividad, intenta recrearla en el estado a través de un objeto Bundle (par-valor)– Ej. el usuario da 'Back' hasta llegar a ella o el usuario gira
el dispositivo
● El sistema reconstruye la interfaz (objetos View) sin que hagamos nada
● Debemos guardar datos adicionales de la interfaz usando el método onSaveInstanceState(), el resto de datos se guardan en onPause()
![Page 32: Tema 4.4 Actividades](https://reader033.vdocuments.site/reader033/viewer/2022052214/55889906d8b42a317d8b46ec/html5/thumbnails/32.jpg)
Actividades 32
Guardar estado
● Antes de onStop(), llama a onSaveInstanceState() y tras onCreate() llama a onRestoreInstanceState()
![Page 33: Tema 4.4 Actividades](https://reader033.vdocuments.site/reader033/viewer/2022052214/55889906d8b42a317d8b46ec/html5/thumbnails/33.jpg)
Actividades 33
Ejemplo restore en onCreate()
![Page 34: Tema 4.4 Actividades](https://reader033.vdocuments.site/reader033/viewer/2022052214/55889906d8b42a317d8b46ec/html5/thumbnails/34.jpg)
Actividades 34
Ejemplo restore en onStart()
![Page 35: Tema 4.4 Actividades](https://reader033.vdocuments.site/reader033/viewer/2022052214/55889906d8b42a317d8b46ec/html5/thumbnails/35.jpg)
Actividades 35
Resumen
● Las actividades tienen un ciclo de vida que permite reactivarlas, reiniciarlas, pausarlas, pararlas, …
● Para gestionar los cambios, usamos métodos de callBack
● Siempre tenemos que implementar onCreate() y fijar el layout de la actividad
![Page 36: Tema 4.4 Actividades](https://reader033.vdocuments.site/reader033/viewer/2022052214/55889906d8b42a317d8b46ec/html5/thumbnails/36.jpg)
Actividades 36
¿Preguntas?