Usuario:ManuelRomero/Android2/Introduccion/Actividades

Activity, fragment e Intens
http://developer.android.com/guide/components/activities.html http://developer.android.com/reference/android/app/Activity.html
 * 1) Referencia
 * Una aplicación puede tener una o más activity
 * El objetivo de una activity es interactuar con el usuario
 * Una activity tiene vida propia cumpliendo un ciclo de vida
 * 1) toda activity deriva de la clase Activity

Ciclo de vida de una activity

 * Una actividad puede tener tres estados
 * Ejecución
 * estará en la parte superior de la pila de actividades
 * aparecerá en pantalla. Esto implica que interactuará directamente con el usuario.


 * Pausa
 * Esta actividad está visible, pero parcialmente oculta por una actividad transparente o un cuadro de diálogo.
 * Otro ejemplo es cuando la actividad es bloqueada por la pantalla del teléfono.
 * Una actividad en pausa puede ser eliminada por el sistema si éste lo considera necesario (p.e. falta de memoria), sin aviso previo.


 * Detenida
 * Otra actividad pasa a estar en ejecución y nos oculta totalmente.
 * No está visible en pantalla ni el usuario puede interactuar con ella.


 * Toda actividad en pausa o detenida puede
 * 1) volverse a poner en ejecución recuperarando su propio contexto tal cual lo dejó
 * 2) o ser eliminadas por el sistema operativo (de forma educada método finisied o sin informar de ello.
 * Una actividad tiene una serie de métodos protegidos que se pueden sobreescribir para obtener información sobre los cambios de estado.

onCreate
 * Creacion de la actividad
 * Llamado cuando se crea una actividad por primera vez
 * En este método se debe crear e instanciar los objetos que utiliza la aplicación
 * Este método solo se llamará una vez durante el ciclo de vida de una actividad

onStart
 * Actividad visible
 * Se inicia una actividad (por primera vez o por que vuelve de segundo plano)

onResume
 * Actividad interactuando con el usuario
 * Se inicia una actividad (por primera vez o por que vuelve de segundo plano)
 * Se debe iniciar cualquier servicio o proceso que necesite que se esté ejecutando cuando mi proceso está en primer plano

onPause
 * Actividad se detiene y otra se reanuda
 * La actividad deja de estar en primer plano (pasa a segundo plano o se va a destruir).
 * Detener cualquier servicio o proceso que no se tiene que ejecutar si mi proceso no está en primer plano

onStop
 * Actividad ya no es visible para el usuario
 * Una actividad entra en estado detenido
 * Siempre estará precedido del método onPause
 * Aquí la actividad puede ser eliminada

onDestroy
 * Actividad se destruyeya no es visible para el usuario
 * Este método es llamado al final de la vida de la actividad si no ha sido eliminada en el método onPause o onStop
 * La actividad se destruye
 * Se deben de liberar los recursos antes de que la actividad sea destruida

onRestart
 * Actividad detenida se reanuda
 * Siempre que una actividad detenida pasa a ser retomada (en ejecución)
 * Siempre va precedida de onStop

Imagen:CicloVidaActividad.png  600px|center
 * A continuación podemos analicar la siguiente imagen y sacar conclusiones

Código de ejemplo
El sistema nos ha creado el siguiente contendio
 * 1) Creamos un nuevo proyecto llamado Actividad1
 * 2) Aceptamos por defecto las opciones
 * 3) Y vamos al fuente (src... MainActivity.java)
 * La clase de actividad carga su componente de interfaz de usuario utilizando res/layout/activity_main.xml
 * Lo podemos ver en modo gráfico y el contenido del fichero
 * Ahora debemos cargar la actividad en el fichero AndoridManifest.xml
 * Si editamos el fichero vemos que ya está cargado
 * Existen asistentes para hacer las cosas de manera manual y no tocar el fuente xml
 * En este caso ya tenemos la actividad cargada en el fichero correspondiente

Modificando Activity.java

 * Añadimos en la actividad que nos informe cada vez que se ejecuta un método de la clase Activity

Comentando las modificaciones
Referencia http://developer.android.com/reference/android/util/Log.html Imagen:perspectivaDDMS.png center
 * Esta clase es para enviar mensajes a un fichero de log
 * Usaremos el método d
 * Este método envía un mensaje de debug a un fichero log
 * donde tag identifica la actividad o clase que envía el mensaje
 * donde msg Es el mensaje que queremos enviar
 * Posteriormente sobreescribimos los métodos de la clase Activity
 * Ejecutamos con F11 para debugar (Perspectiva DDMS)
 * Observamos al interactuar con el teléfono como va pasando por todos los ciclos de vida