Tema 4 5_2_receptores_difusion
-
Upload
carlos-a-iglesias -
Category
Sports
-
view
432 -
download
1
description
Transcript of Tema 4 5_2_receptores_difusion
![Page 1: Tema 4 5_2_receptores_difusion](https://reader034.fdocuments.net/reader034/viewer/2022050723/55889823d8b42a3c7d8b4645/html5/thumbnails/1.jpg)
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
![Page 2: Tema 4 5_2_receptores_difusion](https://reader034.fdocuments.net/reader034/viewer/2022050723/55889823d8b42a3c7d8b4645/html5/thumbnails/2.jpg)
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
![Page 3: Tema 4 5_2_receptores_difusion](https://reader034.fdocuments.net/reader034/viewer/2022050723/55889823d8b42a3c7d8b4645/html5/thumbnails/3.jpg)
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]
![Page 4: Tema 4 5_2_receptores_difusion](https://reader034.fdocuments.net/reader034/viewer/2022050723/55889823d8b42a3c7d8b4645/html5/thumbnails/4.jpg)
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
–
![Page 5: Tema 4 5_2_receptores_difusion](https://reader034.fdocuments.net/reader034/viewer/2022050723/55889823d8b42a3c7d8b4645/html5/thumbnails/5.jpg)
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
![Page 6: Tema 4 5_2_receptores_difusion](https://reader034.fdocuments.net/reader034/viewer/2022050723/55889823d8b42a3c7d8b4645/html5/thumbnails/6.jpg)
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
![Page 7: Tema 4 5_2_receptores_difusion](https://reader034.fdocuments.net/reader034/viewer/2022050723/55889823d8b42a3c7d8b4645/html5/thumbnails/7.jpg)
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
![Page 8: Tema 4 5_2_receptores_difusion](https://reader034.fdocuments.net/reader034/viewer/2022050723/55889823d8b42a3c7d8b4645/html5/thumbnails/8.jpg)
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
![Page 9: Tema 4 5_2_receptores_difusion](https://reader034.fdocuments.net/reader034/viewer/2022050723/55889823d8b42a3c7d8b4645/html5/thumbnails/9.jpg)
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
![Page 10: Tema 4 5_2_receptores_difusion](https://reader034.fdocuments.net/reader034/viewer/2022050723/55889823d8b42a3c7d8b4645/html5/thumbnails/10.jpg)
Acceso a Datos 10
AndroidManifest.xml
![Page 11: Tema 4 5_2_receptores_difusion](https://reader034.fdocuments.net/reader034/viewer/2022050723/55889823d8b42a3c7d8b4645/html5/thumbnails/11.jpg)
Acceso a Datos 11
BootReceiver
![Page 12: Tema 4 5_2_receptores_difusion](https://reader034.fdocuments.net/reader034/viewer/2022050723/55889823d8b42a3c7d8b4645/html5/thumbnails/12.jpg)
Acceso a Datos 12
BootReceiver v2
● Puede ser incómodo que siempre se nos lance el servicio... añadimos una preferencia
![Page 13: Tema 4 5_2_receptores_difusion](https://reader034.fdocuments.net/reader034/viewer/2022050723/55889823d8b42a3c7d8b4645/html5/thumbnails/13.jpg)
Acceso a Datos 13
Preferencias (I)xml/prefs.xml
![Page 14: Tema 4 5_2_receptores_difusion](https://reader034.fdocuments.net/reader034/viewer/2022050723/55889823d8b42a3c7d8b4645/html5/thumbnails/14.jpg)
Acceso a Datos 14
Preferencias (II)
● Las opciones de ListPreference las añadimos en values/arrays.xml
![Page 15: Tema 4 5_2_receptores_difusion](https://reader034.fdocuments.net/reader034/viewer/2022050723/55889823d8b42a3c7d8b4645/html5/thumbnails/15.jpg)
Acceso a Datos 15
NetworkReceiver
![Page 16: Tema 4 5_2_receptores_difusion](https://reader034.fdocuments.net/reader034/viewer/2022050723/55889823d8b42a3c7d8b4645/html5/thumbnails/16.jpg)
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
![Page 17: Tema 4 5_2_receptores_difusion](https://reader034.fdocuments.net/reader034/viewer/2022050723/55889823d8b42a3c7d8b4645/html5/thumbnails/17.jpg)
Acceso a Datos 17
TimelineActivity (I)
Defino un nuevo evento (personalizado) para la
aplicación: NEW_STATUS
![Page 18: Tema 4 5_2_receptores_difusion](https://reader034.fdocuments.net/reader034/viewer/2022050723/55889823d8b42a3c7d8b4645/html5/thumbnails/18.jpg)
Acceso a Datos 18
TimelineActivity (II)
En vez de registrar el receptor en el
manifiesto, lo hago de forma programática (registerReceiver)
![Page 19: Tema 4 5_2_receptores_difusion](https://reader034.fdocuments.net/reader034/viewer/2022050723/55889823d8b42a3c7d8b4645/html5/thumbnails/19.jpg)
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
![Page 20: Tema 4 5_2_receptores_difusion](https://reader034.fdocuments.net/reader034/viewer/2022050723/55889823d8b42a3c7d8b4645/html5/thumbnails/20.jpg)
Acceso a Datos 20
UpdaterService (I)
![Page 21: Tema 4 5_2_receptores_difusion](https://reader034.fdocuments.net/reader034/viewer/2022050723/55889823d8b42a3c7d8b4645/html5/thumbnails/21.jpg)
Acceso a Datos 21
UpdaterService (II)
![Page 22: Tema 4 5_2_receptores_difusion](https://reader034.fdocuments.net/reader034/viewer/2022050723/55889823d8b42a3c7d8b4645/html5/thumbnails/22.jpg)
Acceso a Datos 22
UpdaterService (III)
![Page 23: Tema 4 5_2_receptores_difusion](https://reader034.fdocuments.net/reader034/viewer/2022050723/55889823d8b42a3c7d8b4645/html5/thumbnails/23.jpg)
Acceso a Datos 23
Lo que llevamos hecho...
![Page 24: Tema 4 5_2_receptores_difusion](https://reader034.fdocuments.net/reader034/viewer/2022050723/55889823d8b42a3c7d8b4645/html5/thumbnails/24.jpg)
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
![Page 25: Tema 4 5_2_receptores_difusion](https://reader034.fdocuments.net/reader034/viewer/2022050723/55889823d8b42a3c7d8b4645/html5/thumbnails/25.jpg)
Acceso a Datos 25
¿Preguntas?