36
Análisis y Diseño de Software Departamento de Ingeniería de Sistemas Telemáticos http://moodle.dit.upm.es Carlos A. Iglesias <[email protected]> 1.0 19/04/2013 Actividades

Tema 4.4 Actividades

Embed Size (px)

Citation preview

Page 1: Tema 4.4 Actividades

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

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

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

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

Actividades 5

Objetivos

● Entender qué es una Actividad

● Entender el ciclo de vida de una actividad

Page 6: Tema 4.4 Actividades

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

Actividades 7

Pila de Actividades

Page 8: Tema 4.4 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, ...)

Page 9: Tema 4.4 Actividades

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

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

Actividades 11

Ejemplo ActivityLifecycle (I)

Debería ser stopped, es una optimización de

Android

Page 12: Tema 4.4 Actividades

Actividades 12

Ejemplo ActivityLifecycle (II)

Page 13: Tema 4.4 Actividades

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

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

Actividades 15

Ejemplo Actividad

Page 16: Tema 4.4 Actividades

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

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

Actividades 18

Crear Actividad

● El sistema llama en secuencia a onCreate(), onStart(), onResume()

Page 19: Tema 4.4 Actividades

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

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

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

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

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

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

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

Actividades 26

Parar y reiniciar una actividad

● Métodos para parar/reiniciar: onStop() / onRestart() / onStart() / onResume()

Page 27: Tema 4.4 Actividades

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

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

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

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

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

Actividades 32

Guardar estado

● Antes de onStop(), llama a onSaveInstanceState() y tras onCreate() llama a onRestoreInstanceState()

Page 33: Tema 4.4 Actividades

Actividades 33

Ejemplo restore en onCreate()

Page 34: Tema 4.4 Actividades

Actividades 34

Ejemplo restore en onStart()

Page 35: Tema 4.4 Actividades

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

Actividades 36

¿Preguntas?