Análisis y Diseño de Software
Departamento de Ingeniería de Sistemas Telemáticoshttp://moodle.dit.upm.es
Carlos A. Iglesias <[email protected]>
Tema 4.5.2Receptores de difusión
Acceso a Datos 2
Teoría
Ejercicio práctico en el ordenador
Ampliación de conocimientos
Lectura / Vídeo / Podcast
Práctica libre / Experimentación
Leyenda
Acceso a Datos 3
Temario
● 4.1 Introducción a Android [Gar10, cap1-2 ]
● 4.2 Desarrollo con Android [Gar10, cap3-5]
● 4.3 Interfaces de Usuario [Gar10, cap6]
● 4.4 Intenciones y Servicios [Gar10, cap7-8]
● 4.5 Acceso a Datos [Gar10, cap9-12]
– 4.5.1 Base de datos [Gar10, cap9]– 4.5.2 Receptores de Difusión [Gar10,
cap10]
Acceso a Datos 4
Bibliografía
● Libro de texto: – [Gar10] Learning Android, Marko Gargenta,
O'Reilly, 2010, Cap 10-12. Disponible en http://ofps.oreilly.com/titles/9781449390501/
● Android Developers– http://developer.android.com/reference/android/app/Service.html
– https://developer.android.com/reference/android/content/BroadcastReceiver.html
– http://developer.android.com/guide/topics/providers/content-providers.html
–
Acceso a Datos 5
Objetivos
● Aprender a utilizar componentes de Android más elaborados, como los receptores de difusión
● Entender el patrón de diseño publicador-subscriptor, y la comunicación asíncrona entre componentes
Acceso a Datos 6
Motivación
● El usuario tiene que lanzar el servicio.– Nos gustaría que el sistema lanzara el
servicio cuando encendemos el teléfono
● También el servicio se conecta periódicamente, incluso si no tenemos conexión de red– Nos gustaría que sólo nos conectáramos para
actualizar cuando hay conexión de red
Desarrollo con Android 7
Receptores de difusión
● Sigue patrón publish/subscribe
● El subscriptor tiene un método que se ejecuta cuando recibe el evento
Acceso a Datos 8
BroadCast Receivers
● Se subscriben a un 'evento' (Intención) en AndroidManifest.xml
●Tiene un método onReceive() que es invocado cada vez que surge dicho evento
● Podemos tener que declarar permisos para que el usuario autorice que la aplicación sea notificada de estos eventos
Acceso a Datos 9
Broadcast Receivers en Yamba
● En nuestro caso:– BootReceiver: se subscribe al evento de
reinicio del teléfono– NetworkReceiver: se subscribe al evento de
conexión / desconexión de red
Acceso a Datos 10
AndroidManifest.xml
Acceso a Datos 11
BootReceiver
Acceso a Datos 12
BootReceiver v2
● Puede ser incómodo que siempre se nos lance el servicio... añadimos una preferencia
Acceso a Datos 13
Preferencias (I)xml/prefs.xml
Acceso a Datos 14
Preferencias (II)
● Las opciones de ListPreference las añadimos en values/arrays.xml
Acceso a Datos 15
NetworkReceiver
Acceso a Datos 16
Actualizar pantalla...
● Ahora mismo si estamos viendo el TimelineActivity y llegan nuevos mensajes de estado del servicio UpdateService, no se refresca la pantalla
● Vamos a hacer que UpdateService notifique a TimelineActivity cuando llegan nuevos mensajes de estado– Definimos una clase interna TimelineReceiver en
TimelineActivity que se subscribe a eventos de UpdateService
Acceso a Datos 17
TimelineActivity (I)
Defino un nuevo evento (personalizado) para la
aplicación: NEW_STATUS
Acceso a Datos 18
TimelineActivity (II)
En vez de registrar el receptor en el
manifiesto, lo hago de forma programática (registerReceiver)
Acceso a Datos 19
TimelineActivity (III)
Refrescamos el objeto Cursor y el objeto Adaptador
para que 're-ejecuten' la consulta
cuando hay un nuevo mensaje de
estado
Acceso a Datos 20
UpdaterService (I)
Acceso a Datos 21
UpdaterService (II)
Acceso a Datos 22
UpdaterService (III)
Acceso a Datos 23
Lo que llevamos hecho...
Acceso a Datos 24
Resumen
● En este tema hemos aprendido a utilizar un componente elaborado, los subscriptores de difusión
● Hemos visto eventos del sistema y eventos definidos por la aplicación
● También hemos visto cómo registrar componentes de forma declarativa y de forma programática
Acceso a Datos 25
¿Preguntas?
Top Related