Tema

  • 841 views
Uploaded on

 

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
841
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
30
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 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. LeyendaTeoríaEjercicio práctico en el ordenadorAmpliación de conocimientosLectura / Vídeo / PodcastPráctica libre / Experimentación Intenciones y Servicios 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.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. 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. 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. 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. Patrón de Diseño Singleton● Una clase que tiene sólo un objeto Intenciones y Servicios 7
  • 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. YambaSingleton (I) Intenciones y Servicios 9
  • 10. YambaSingleton (II) Intenciones y Servicios 10
  • 11. StatusActivity (I) Intenciones y Servicios 11
  • 12. StatusActivity (II) Intenciones y Servicios 12
  • 13. StatusActivity (III) Intenciones y Servicios 13
  • 14. StatusActivity (IV) Intenciones y Servicios 14
  • 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. 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. 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. Servicios● Invocado por otra aplicación, se crea (bind) una conexión permanente con el servicio Usado de fondo Intenciones y Servicios 21
  • 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. AndroidManifest.xml Intenciones y Servicios 23
  • 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. res/menu/menu.xml Intenciones y Servicios 25
  • 23. StatusActivity En res/values/strings.xml Intenciones y Servicios 26
  • 24. Probamos... Intenciones y Servicios 27
  • 25. Menu Intenciones y Servicios 28
  • 26. Comprobar LogCat View: Intenciones y Servicios 29
  • 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. UpdaterService2 (I) Intenciones y Servicios 31
  • 29. UpdaterService2 (II) Intenciones y Servicios 32
  • 30. UpdaterService2 (III) Intenciones y Servicios 33
  • 31. Cambio referencias AndroidManifest.xml StatusActivity6.java Intenciones y Servicios 34
  • 32. Run As... Intenciones y Servicios 35
  • 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. YambaSingleton2 Intenciones y Servicios 37
  • 35. UpdaterService3 (I) Intenciones y Servicios 38
  • 36. UpdaterService (II) Intenciones y Servicios 39
  • 37. UpdaterService (III) Intenciones y Servicios 40
  • 38. UpdaterService (IV) Intenciones y Servicios 41
  • 39. Probamos... Si hacemos versiones, cambiamos en StatusActivity y AndroidManifest.xml Intenciones y Servicios 42
  • 40. Lo que llevamos hecho... Intenciones y Servicios 43
  • 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. ¿Preguntas? Intenciones y Servicios 45