Tema

988 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
988
On SlideShare
0
From Embeds
0
Number of Embeds
111
Actions
Shares
0
Downloads
33
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Tema

  1. 1. Análisis y Diseño de SoftwareTema 4.4.2Intenciones y ServiciosServicios Carlos A. Iglesias <cif@gsi.dit.upm.es> Departamento de Ingeniería de Sistemas Telemáticos http://moodle.dit.upm.es
  2. 2. LeyendaTeoríaEjercicio práctico en el ordenadorAmpliación de conocimientosLectura / Vídeo / PodcastPráctica libre / Experimentación Intenciones y Servicios 2
  3. 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.4.1 Preferencias, Sistema de Ficheros, Menú de Opciones e Intenciones (cap 7) – 4.4.2 Servicios (cap 8)● 4.5 Acceso a Datos [Gar10, cap9.10] Intenciones y Servicios 3
  4. 4. Bibliografía● Libro de texto: – [Gar10] Learning Android, Marko Gargenta, OReilly, 2010, Cap 8. Disponible en http://ofps.oreilly.com/titles/9781449390501/● Android Developers – http://developer.android.com/reference/android/app/Service.html – http://developer.android.com/guide/topics/testing/testing_android.html Intenciones y Servicios 4
  5. 5. Objetivos● Aprender el patrón singleton y cómo compartir objetos en una aplicación Android● Aprender a lanzar (y configurar) procesos de fondo que se lanzan aunque la actividad no esté activa (servicios) Intenciones y Servicios 5
  6. 6. Motivación● En el tema anterior refactorizamos getTwitter(), pero es dependiente de una actividad. Parece que no depende de esa pantalla, sino de toda la aplicación – Una opción application objects, otra un singleton● Queremos aprender a tener procesos que se lanzan aunque no lance la aplicación el usuario. P. ej. obtener noticias, o... – Veremos servicios Intenciones y Servicios 6
  7. 7. Patrón de Diseño Singleton● Una clase que tiene sólo un objeto Intenciones y Servicios 7
  8. 8. YambaApplication● Refactorización: – YambaApplication va a ser responsable de i) gestionar preferencias y ii) gestionar el objeto twitter • Movemos el campo twitter y el método getTwitter a YambaApplication – Ahora getTwitter() tendrá que ser público y synchronized • Movemos la implementación de OnSharedPreferenceChangeListener y el campo twitter a YambaObject Intenciones y Servicios 8
  9. 9. YambaSingleton (I) Intenciones y Servicios 9
  10. 10. YambaSingleton (II) Intenciones y Servicios 10
  11. 11. StatusActivity (I) Intenciones y Servicios 11
  12. 12. StatusActivity (II) Intenciones y Servicios 12
  13. 13. StatusActivity (III) Intenciones y Servicios 13
  14. 14. StatusActivity (IV) Intenciones y Servicios 14
  15. 15. Comentarios● En el libro hay una implementación alternativa (extendiendo el objeto Application), pero se recomienda ésta● El contexto en Android nos permite acceder a los recursos. Para acceder al contexto usamos – getApplication() dentro de una actividad (recomendado) Intenciones y Servicios 15
  16. 16. UpdaterService● Vamos a crear un servicio que guarde en local los posts de twitter para ver algo aunque no tengamos conexión● Necesitaremos – Crear la clase Java del Servicio – Registrar el servicio en al manifiesto – Lanzar el servicio Intenciones y Servicios 19
  17. 17. Servicios● Los servicios permiten – Ejecutar una tarea “de fondo” – Ofrecer una funcionalidad a otras aplicaciones● Pero... – No se ejecutan en un proceso separado ni en una hebra, es cosa del programador hacer que sea una hebra http://developer.android.com/reference/android/app/Service.html Intenciones y Servicios 20
  18. 18. Servicios● Invocado por otra aplicación, se crea (bind) una conexión permanente con el servicio Usado de fondo Intenciones y Servicios 21
  19. 19. UpdaterService - START_STICKY es el modo ejecutado de fondo, debe ser lanzado y parado - START_NOT_STICKY es lanzado por un cliente (bind) Intenciones y Servicios 22
  20. 20. AndroidManifest.xml Intenciones y Servicios 23
  21. 21. Lanzar / Parar servicio● Añadimos opciones para que se pueda lanzar / parar servicio – Editamos res/menu/menu.xml – Actualizamos onOptionsItemSelected de StatusActivity Intenciones y Servicios 24
  22. 22. res/menu/menu.xml Intenciones y Servicios 25
  23. 23. StatusActivity En res/values/strings.xml Intenciones y Servicios 26
  24. 24. Probamos... Intenciones y Servicios 27
  25. 25. Menu Intenciones y Servicios 28
  26. 26. Comprobar LogCat View: Intenciones y Servicios 29
  27. 27. Mejorando el servicio● Ahora no hace nada...● Vamos a hacer que se conecte cada rato, y no haga nada el resto del tiempo (Thread.sleep())●→ Segunda versión del servicio – UpdaterService2 / StatusActivity6 Intenciones y Servicios 30
  28. 28. UpdaterService2 (I) Intenciones y Servicios 31
  29. 29. UpdaterService2 (II) Intenciones y Servicios 32
  30. 30. UpdaterService2 (III) Intenciones y Servicios 33
  31. 31. Cambio referencias AndroidManifest.xml StatusActivity6.java Intenciones y Servicios 34
  32. 32. Run As... Intenciones y Servicios 35
  33. 33. Más cambios● Vamos a poner un “flag” en YambaSingleton para que sepamos si el servicio está lanzado o no● Y vamos a usar YambaSingleton para conectarnos a Twitter desde el Servicio, recuperar los tweets de nuestros amigos, y así poder mostrarlos si no hay conexión Intenciones y Servicios 36
  34. 34. YambaSingleton2 Intenciones y Servicios 37
  35. 35. UpdaterService3 (I) Intenciones y Servicios 38
  36. 36. UpdaterService (II) Intenciones y Servicios 39
  37. 37. UpdaterService (III) Intenciones y Servicios 40
  38. 38. UpdaterService (IV) Intenciones y Servicios 41
  39. 39. Probamos... Si hacemos versiones, cambiamos en StatusActivity y AndroidManifest.xml Intenciones y Servicios 42
  40. 40. Lo que llevamos hecho... Intenciones y Servicios 43
  41. 41. Resumen● En este tema hemos aprendido a – El patrón de diseño Singleton, y cómo usarlo en Android – Qué son y cómo usar servicios • Lanzar hebras desde servicios – Modificar el menú para incluir más opciones Intenciones y Servicios 44
  42. 42. ¿Preguntas? Intenciones y Servicios 45

×