Upload
carlos-a-iglesias
View
159
Download
0
Embed Size (px)
Citation preview
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
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
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
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
Actividades 5
Objetivos
● Entender qué es una Actividad
● Entender el ciclo de vida de una actividad
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
Actividades 7
Pila de Actividades
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, ...)
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
Actividades 10
Pirámide de estados
● Con cada llamada a un método de callback cambiamos de estado
● Hay estados transitorios: Created, Started
Actividades 11
Ejemplo ActivityLifecycle (I)
Debería ser stopped, es una optimización de
Android
Actividades 12
Ejemplo ActivityLifecycle (II)
Actividades 13
Tiempo de vida de la actividad (I)
Actividad visible (segundo plano)
Actividad visible y activa (primer plano)
Actividad viva
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()
Actividades 15
Ejemplo Actividad
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
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
Actividades 18
Crear Actividad
● El sistema llama en secuencia a onCreate(), onStart(), onResume()
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
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
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
Actividades 22
Pausar y reanudar una Actividad
● Otra actividad pasa a primer plano, pero la actividad permanece parcialmente visible
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...)
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()
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
Actividades 26
Parar y reiniciar una actividad
● Métodos para parar/reiniciar: onStop() / onRestart() / onStart() / onResume()
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
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()
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
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
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()
Actividades 32
Guardar estado
● Antes de onStop(), llama a onSaveInstanceState() y tras onCreate() llama a onRestoreInstanceState()
Actividades 33
Ejemplo restore en onCreate()
Actividades 34
Ejemplo restore en onStart()
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
Actividades 36
¿Preguntas?