Este documento describe el ciclo de vida de las actividades en Android. Explica que las actividades pasan por diferentes estados como creada, iniciada, pausada, detenida y destruida, y que el sistema Android notifica a la actividad de los cambios de estado a través de métodos callback como onCreate(), onStart(), onResume(), onPause() y onDestroy(). También cubre cómo las actividades deben manejar eventos como guardar y restaurar el estado cuando son recreadas, y los pasos necesarios para crear e implementar una nueva actividad.
segunda clase de python, resumiendo 2 años en un par de horas.
La idea es mostrar las ventajas de algunas herramientas de software, su uso, configuración y paradigmas.
segunda clase de python, resumiendo 2 años en un par de horas.
La idea es mostrar las ventajas de algunas herramientas de software, su uso, configuración y paradigmas.
Ordenagailu baten piezak aldatzean eta sistema operatibo berri bat erabiltzean sortzen diren arazo eta erabili beharreko soluzioen lana usten dizuegu hemen. Espero dugu zuen gustoko eta lagungarri izatea.
Kepa, Alvaro, Erik, David, Jon, Berro eta Naroa
Ordenagailu baten piezak aldatzean eta sistema operatibo berri bat erabiltzean sortzen diren arazo eta erabili beharreko soluzioen lana usten dizuegu hemen. Espero dugu zuen gustoko eta lagungarri izatea.
Kepa, Alvaro, Erik, David, Jon, Berro eta Naroa
1. Análisis y Diseño
de Software
Departamento de Ingeniería de Sistemas Telemáticos
http://moodle.dit.upm.es
Carlos A. Iglesias <cif@gsi.dit.upm.es>
1.0 19/04/2013
Actividades
2. 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
3. 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
6. 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
8. 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, ...)
9. 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
10. Actividades 10
Pirámide de estados
● Con cada llamada a un método de callback
cambiamos de estado
● Hay estados transitorios: Created, Started
13. Actividades 13
Tiempo de vida de la
actividad (I)
Actividad visible
(segundo plano)
Actividad visible y activa
(primer plano)
Actividad viva
14. 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()
16. 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
17. 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
19. 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
20. 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
21. 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
22. Actividades 22
Pausar y reanudar una
Actividad
● Otra actividad pasa a primer plano, pero la
actividad permanece parcialmente visible
23. 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...)
24. 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()
25. 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
26. Actividades 26
Parar y reiniciar una
actividad
● Métodos para parar/reiniciar: onStop() /
onRestart() / onStart() / onResume()
27. 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
28. 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()
29. 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
30. 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
31. 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()
32. Actividades 32
Guardar estado
● Antes de onStop(), llama a
onSaveInstanceState() y tras onCreate()
llama a onRestoreInstanceState()
35. 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