SlideShare ist ein Scribd-Unternehmen logo
1 von 25
Downloaden Sie, um offline zu lesen
Análisis y Diseño
      de Software

Tema 4.5.2
Receptores de difusión

      Carlos A. Iglesias <cif@gsi.dit.upm.es>
     Departamento de Ingeniería de Sistemas Telemáticos
                                 http://moodle.dit.upm.es
Leyenda
Teoría


Ejercicio práctico en el ordenador


Ampliación de conocimientos


Lectura / Vídeo / Podcast


Práctica libre / Experimentación



                       Acceso a Datos   2
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         3
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                      4
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     5
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


                                Acceso a Datos        6
Receptores de difusión
           ●   Sigue patrón
               publish/subscribe
           ●    El subscriptor tiene
               un método que se
               ejecuta cuando
               recibe el evento




            Desarrollo con Android     7
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       8
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       9
AndroidManifest.xml




           Acceso a Datos   10
BootReceiver




        Acceso a Datos   11
BootReceiver v2
●    Puede ser incómodo que siempre se nos
    lance el servicio... añadimos una
    preferencia




                          Acceso a Datos     12
Preferencias (I)
xml/prefs.xml




                          Acceso a Datos   13
Preferencias (II)
●   Las opciones de ListPreference las
    añadimos en values/arrays.xml




                           Acceso a Datos   14
NetworkReceiver




         Acceso a Datos   15
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          16
TimelineActivity (I)



                    Defino un nuevo evento
                    (personalizado) para la
                          aplicación:
                        NEW_STATUS




            Acceso a Datos                    17
TimelineActivity (II)




                        En vez de registrar el
                            receptor en el
                        manifiesto, lo hago de
                         forma programática
                          (registerReceiver)




             Acceso a Datos                      18
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                      19
UpdaterService (I)




           Acceso a Datos   20
UpdaterService (II)




           Acceso a Datos   21
UpdaterService (III)




            Acceso a Datos   22
Lo que llevamos hecho...




              Acceso a Datos   23
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       24
¿Preguntas?




       Acceso a Datos   25

Weitere ähnliche Inhalte

Andere mochten auch

Clase conexion java - Analisis de Sistemas
Clase conexion java - Analisis de SistemasClase conexion java - Analisis de Sistemas
Clase conexion java - Analisis de SistemasJose Bustamante Romero
 
Código Java Escrito de Forma Estándar
Código Java Escrito de Forma EstándarCódigo Java Escrito de Forma Estándar
Código Java Escrito de Forma EstándarIgnacio Aular Reyes
 
Java Arreglos y Matrices
Java Arreglos y MatricesJava Arreglos y Matrices
Java Arreglos y MatricesJuan Astudillo
 
Patron de Desarrollo Modelo Vista Controlador
Patron de Desarrollo Modelo Vista ControladorPatron de Desarrollo Modelo Vista Controlador
Patron de Desarrollo Modelo Vista ControladorHenry Vargas
 
Mejora de Rendimiento y Aceleración de Microsoft Excel
Mejora de Rendimiento y Aceleración de Microsoft ExcelMejora de Rendimiento y Aceleración de Microsoft Excel
Mejora de Rendimiento y Aceleración de Microsoft ExcelJuan Astudillo
 
PERSISTENCIA BASADA EN ARCHIVOS
PERSISTENCIA BASADA EN ARCHIVOSPERSISTENCIA BASADA EN ARCHIVOS
PERSISTENCIA BASADA EN ARCHIVOSDarwin Durand
 
GSI Research Group Presentation
GSI Research Group PresentationGSI Research Group Presentation
GSI Research Group PresentationCarlos A. Iglesias
 
Unidad1 Introduccion a las Tecnologias Web
Unidad1  Introduccion a las Tecnologias WebUnidad1  Introduccion a las Tecnologias Web
Unidad1 Introduccion a las Tecnologias WebNorma Alicia
 
sistema matricula
sistema matriculasistema matricula
sistema matriculamaycol_30
 
Calculadora Gráfica Java implementando el Patrón MVC
Calculadora Gráfica Java implementando el Patrón MVCCalculadora Gráfica Java implementando el Patrón MVC
Calculadora Gráfica Java implementando el Patrón MVCIgnacio Aular Reyes
 
Manual del sistema de matricula y notas
Manual del sistema de matricula y notasManual del sistema de matricula y notas
Manual del sistema de matricula y notasJair Sinti
 
Documentacion del sistema de registro academico fundageo
Documentacion del sistema de registro academico fundageoDocumentacion del sistema de registro academico fundageo
Documentacion del sistema de registro academico fundageoCecy Villalta
 

Andere mochten auch (20)

Clase conexion java - Analisis de Sistemas
Clase conexion java - Analisis de SistemasClase conexion java - Analisis de Sistemas
Clase conexion java - Analisis de Sistemas
 
Código Java Escrito de Forma Estándar
Código Java Escrito de Forma EstándarCódigo Java Escrito de Forma Estándar
Código Java Escrito de Forma Estándar
 
Logica
LogicaLogica
Logica
 
Java Arreglos y Matrices
Java Arreglos y MatricesJava Arreglos y Matrices
Java Arreglos y Matrices
 
Patron de Desarrollo Modelo Vista Controlador
Patron de Desarrollo Modelo Vista ControladorPatron de Desarrollo Modelo Vista Controlador
Patron de Desarrollo Modelo Vista Controlador
 
Mejora de Rendimiento y Aceleración de Microsoft Excel
Mejora de Rendimiento y Aceleración de Microsoft ExcelMejora de Rendimiento y Aceleración de Microsoft Excel
Mejora de Rendimiento y Aceleración de Microsoft Excel
 
PERSISTENCIA BASADA EN ARCHIVOS
PERSISTENCIA BASADA EN ARCHIVOSPERSISTENCIA BASADA EN ARCHIVOS
PERSISTENCIA BASADA EN ARCHIVOS
 
Clase servlet - Análisis de Sistemas
Clase servlet - Análisis de SistemasClase servlet - Análisis de Sistemas
Clase servlet - Análisis de Sistemas
 
Curso Java Avanzado 5 Ejb
Curso Java Avanzado   5 EjbCurso Java Avanzado   5 Ejb
Curso Java Avanzado 5 Ejb
 
Ejemplo Java Rmi
Ejemplo Java RmiEjemplo Java Rmi
Ejemplo Java Rmi
 
GSI Research Group Presentation
GSI Research Group PresentationGSI Research Group Presentation
GSI Research Group Presentation
 
MVC
MVCMVC
MVC
 
Unidad1 Introduccion a las Tecnologias Web
Unidad1  Introduccion a las Tecnologias WebUnidad1  Introduccion a las Tecnologias Web
Unidad1 Introduccion a las Tecnologias Web
 
sistema matricula
sistema matriculasistema matricula
sistema matricula
 
Curso Jsp
Curso JspCurso Jsp
Curso Jsp
 
Proyecto de Sofware
Proyecto de SofwareProyecto de Sofware
Proyecto de Sofware
 
Calculadora Gráfica Java implementando el Patrón MVC
Calculadora Gráfica Java implementando el Patrón MVCCalculadora Gráfica Java implementando el Patrón MVC
Calculadora Gráfica Java implementando el Patrón MVC
 
Manual del sistema de matricula y notas
Manual del sistema de matricula y notasManual del sistema de matricula y notas
Manual del sistema de matricula y notas
 
Documentacion del sistema de registro academico fundageo
Documentacion del sistema de registro academico fundageoDocumentacion del sistema de registro academico fundageo
Documentacion del sistema de registro academico fundageo
 
UML - Analisis de Sistemas
UML - Analisis de SistemasUML - Analisis de Sistemas
UML - Analisis de Sistemas
 

Ähnlich wie Tema 4 5_2_receptores_difusion

Tema 4 4_1_intenciones_servicios
Tema 4 4_1_intenciones_serviciosTema 4 4_1_intenciones_servicios
Tema 4 4_1_intenciones_serviciosCarlos A. Iglesias
 
Androidpresentacion 090531114810-phpapp02
Androidpresentacion 090531114810-phpapp02Androidpresentacion 090531114810-phpapp02
Androidpresentacion 090531114810-phpapp02MadBlake
 
Webinar: Planes de Recuperación de Desastres (DRP)
Webinar: Planes de Recuperación de Desastres (DRP)Webinar: Planes de Recuperación de Desastres (DRP)
Webinar: Planes de Recuperación de Desastres (DRP)Arsys
 
Monitoreo en tiempo real para la mejora continua de una aplicación
Monitoreo en tiempo real para la mejora continua de una aplicaciónMonitoreo en tiempo real para la mejora continua de una aplicación
Monitoreo en tiempo real para la mejora continua de una aplicaciónGlobant
 
Linux OS Disaster Recovery - OpenExpo2016 (Madrid)
Linux OS Disaster Recovery - OpenExpo2016 (Madrid)Linux OS Disaster Recovery - OpenExpo2016 (Madrid)
Linux OS Disaster Recovery - OpenExpo2016 (Madrid)Didac Oliveira
 
Monitorización del Rendimiento en Openbravo
Monitorización del Rendimiento en OpenbravoMonitorización del Rendimiento en Openbravo
Monitorización del Rendimiento en OpenbravoOpenbravo
 
Tema 4.2.2 Desarrollo con Android. El Framework de Android.
Tema 4.2.2 Desarrollo con Android. El Framework de Android.Tema 4.2.2 Desarrollo con Android. El Framework de Android.
Tema 4.2.2 Desarrollo con Android. El Framework de Android.Carlos A. Iglesias
 
Fundamentos desarrollo de Apps para Android
Fundamentos desarrollo de Apps para AndroidFundamentos desarrollo de Apps para Android
Fundamentos desarrollo de Apps para Androidandresuarezz26
 
Firebase - Introducción a BAAS
Firebase - Introducción a BAASFirebase - Introducción a BAAS
Firebase - Introducción a BAASGDG Sincelejo
 
Computación de la nube
Computación de la nubeComputación de la nube
Computación de la nubeMarielyrojas
 
Computación en la nube
Computación en la nubeComputación en la nube
Computación en la nubeoscarvelazero
 
Orquestación de Microservicios Introducción a arquitecturas de desarrollo mod...
Orquestación de Microservicios Introducción a arquitecturas de desarrollo mod...Orquestación de Microservicios Introducción a arquitecturas de desarrollo mod...
Orquestación de Microservicios Introducción a arquitecturas de desarrollo mod...ssuserc860fb
 

Ähnlich wie Tema 4 5_2_receptores_difusion (20)

Tema
Tema Tema
Tema
 
Tema 4 4_1_intenciones_servicios
Tema 4 4_1_intenciones_serviciosTema 4 4_1_intenciones_servicios
Tema 4 4_1_intenciones_servicios
 
Sistema Adflow DHS
Sistema Adflow DHSSistema Adflow DHS
Sistema Adflow DHS
 
Glosario
GlosarioGlosario
Glosario
 
Androidpresentacion 090531114810-phpapp02
Androidpresentacion 090531114810-phpapp02Androidpresentacion 090531114810-phpapp02
Androidpresentacion 090531114810-phpapp02
 
Webinar: Planes de Recuperación de Desastres (DRP)
Webinar: Planes de Recuperación de Desastres (DRP)Webinar: Planes de Recuperación de Desastres (DRP)
Webinar: Planes de Recuperación de Desastres (DRP)
 
Monitoreo en tiempo real para la mejora continua de una aplicación
Monitoreo en tiempo real para la mejora continua de una aplicaciónMonitoreo en tiempo real para la mejora continua de una aplicación
Monitoreo en tiempo real para la mejora continua de una aplicación
 
Linux OS Disaster Recovery - OpenExpo2016 (Madrid)
Linux OS Disaster Recovery - OpenExpo2016 (Madrid)Linux OS Disaster Recovery - OpenExpo2016 (Madrid)
Linux OS Disaster Recovery - OpenExpo2016 (Madrid)
 
Monitorización del Rendimiento en Openbravo
Monitorización del Rendimiento en OpenbravoMonitorización del Rendimiento en Openbravo
Monitorización del Rendimiento en Openbravo
 
Tema 4.2.2 Desarrollo con Android. El Framework de Android.
Tema 4.2.2 Desarrollo con Android. El Framework de Android.Tema 4.2.2 Desarrollo con Android. El Framework de Android.
Tema 4.2.2 Desarrollo con Android. El Framework de Android.
 
Auditoria en BD de las Sesiones Web
Auditoria en BD de las Sesiones WebAuditoria en BD de las Sesiones Web
Auditoria en BD de las Sesiones Web
 
Cloud computing
Cloud computingCloud computing
Cloud computing
 
Fundamentos desarrollo de Apps para Android
Fundamentos desarrollo de Apps para AndroidFundamentos desarrollo de Apps para Android
Fundamentos desarrollo de Apps para Android
 
Analisis y diseño
Analisis y diseñoAnalisis y diseño
Analisis y diseño
 
Firebase - Introducción a BAAS
Firebase - Introducción a BAASFirebase - Introducción a BAAS
Firebase - Introducción a BAAS
 
BASE DE DATOS (2)
BASE DE DATOS (2)BASE DE DATOS (2)
BASE DE DATOS (2)
 
Computación de la nube
Computación de la nubeComputación de la nube
Computación de la nube
 
Computación en la nube
Computación en la nubeComputación en la nube
Computación en la nube
 
Orquestación de Microservicios Introducción a arquitecturas de desarrollo mod...
Orquestación de Microservicios Introducción a arquitecturas de desarrollo mod...Orquestación de Microservicios Introducción a arquitecturas de desarrollo mod...
Orquestación de Microservicios Introducción a arquitecturas de desarrollo mod...
 
Qpar - Quantum Data Systems
Qpar   - Quantum Data SystemsQpar   - Quantum Data Systems
Qpar - Quantum Data Systems
 

Mehr von Carlos A. Iglesias (20)

Entorno PHP
Entorno PHPEntorno PHP
Entorno PHP
 
Bootstrap 3.
Bootstrap 3.Bootstrap 3.
Bootstrap 3.
 
Introducción CSS
Introducción CSSIntroducción CSS
Introducción CSS
 
Introducción HTML
Introducción HTMLIntroducción HTML
Introducción HTML
 
Presentación TEWC
Presentación TEWCPresentación TEWC
Presentación TEWC
 
UPM GSI Presentation
UPM GSI PresentationUPM GSI Presentation
UPM GSI Presentation
 
Introducción Análisis y Diseño
Introducción Análisis y DiseñoIntroducción Análisis y Diseño
Introducción Análisis y Diseño
 
PHP. Bases de Datos
PHP. Bases de DatosPHP. Bases de Datos
PHP. Bases de Datos
 
PHP. Tecnologías Web.
PHP. Tecnologías Web.PHP. Tecnologías Web.
PHP. Tecnologías Web.
 
1 intro php
1 intro php1 intro php
1 intro php
 
0 entorno php
0 entorno php0 entorno php
0 entorno php
 
Introducción TEWC
Introducción TEWCIntroducción TEWC
Introducción TEWC
 
Tema 4.1 Introduccion Android
Tema 4.1 Introduccion AndroidTema 4.1 Introduccion Android
Tema 4.1 Introduccion Android
 
Tema 4.3 Ejemplo sobre teleco
Tema 4.3 Ejemplo sobre telecoTema 4.3 Ejemplo sobre teleco
Tema 4.3 Ejemplo sobre teleco
 
Tema 4.4 Actividades
Tema 4.4 ActividadesTema 4.4 Actividades
Tema 4.4 Actividades
 
Tema 4.5 interfaces
Tema 4.5 interfacesTema 4.5 interfaces
Tema 4.5 interfaces
 
Tema 4.6 Intenciones
Tema 4.6 IntencionesTema 4.6 Intenciones
Tema 4.6 Intenciones
 
Tema 4.7 Acceso a datos
Tema 4.7 Acceso a datosTema 4.7 Acceso a datos
Tema 4.7 Acceso a datos
 
Tema 4.8 Preferencias
Tema 4.8 PreferenciasTema 4.8 Preferencias
Tema 4.8 Preferencias
 
Tema 4.9 Hebras
Tema 4.9 HebrasTema 4.9 Hebras
Tema 4.9 Hebras
 

Tema 4 5_2_receptores_difusion

  • 1. Análisis y Diseño de Software Tema 4.5.2 Receptores de difusión Carlos A. Iglesias <cif@gsi.dit.upm.es> Departamento de Ingeniería de Sistemas Telemáticos http://moodle.dit.upm.es
  • 2. Leyenda Teoría Ejercicio práctico en el ordenador Ampliación de conocimientos Lectura / Vídeo / Podcast Práctica libre / Experimentación Acceso a Datos 2
  • 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 3
  • 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 4
  • 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 5
  • 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 Acceso a Datos 6
  • 7. Receptores de difusión ● Sigue patrón publish/subscribe ● El subscriptor tiene un método que se ejecuta cuando recibe el evento Desarrollo con Android 7
  • 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 8
  • 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 9
  • 10. AndroidManifest.xml Acceso a Datos 10
  • 11. BootReceiver Acceso a Datos 11
  • 12. BootReceiver v2 ● Puede ser incómodo que siempre se nos lance el servicio... añadimos una preferencia Acceso a Datos 12
  • 13. Preferencias (I) xml/prefs.xml Acceso a Datos 13
  • 14. Preferencias (II) ● Las opciones de ListPreference las añadimos en values/arrays.xml Acceso a Datos 14
  • 15. NetworkReceiver Acceso a Datos 15
  • 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 16
  • 17. TimelineActivity (I) Defino un nuevo evento (personalizado) para la aplicación: NEW_STATUS Acceso a Datos 17
  • 18. TimelineActivity (II) En vez de registrar el receptor en el manifiesto, lo hago de forma programática (registerReceiver) Acceso a Datos 18
  • 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 19
  • 20. UpdaterService (I) Acceso a Datos 20
  • 21. UpdaterService (II) Acceso a Datos 21
  • 22. UpdaterService (III) Acceso a Datos 22
  • 23. Lo que llevamos hecho... Acceso a Datos 23
  • 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 24
  • 25. ¿Preguntas? Acceso a Datos 25