Tema
-
Upload
carlos-a-iglesias -
Category
Technology
-
view
866 -
download
0
Transcript of Tema
![Page 1: Tema](https://reader033.fdocuments.ec/reader033/viewer/2022042816/558897abd8b42a547d8b45fc/html5/thumbnails/1.jpg)
Análisis y Diseño de Software
Departamento de Ingeniería de Sistemas Telemáticoshttp://moodle.dit.upm.es
Tema 4.4.2Intenciones y ServiciosServicios
Carlos A. Iglesias <[email protected]>
![Page 2: Tema](https://reader033.fdocuments.ec/reader033/viewer/2022042816/558897abd8b42a547d8b45fc/html5/thumbnails/2.jpg)
Intenciones y Servicios 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](https://reader033.fdocuments.ec/reader033/viewer/2022042816/558897abd8b42a547d8b45fc/html5/thumbnails/3.jpg)
Intenciones y Servicios 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]
![Page 4: Tema](https://reader033.fdocuments.ec/reader033/viewer/2022042816/558897abd8b42a547d8b45fc/html5/thumbnails/4.jpg)
Intenciones y Servicios 4
Bibliografía
● Libro de texto: – [Gar10] Learning Android, Marko Gargenta,
O'Reilly, 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
![Page 5: Tema](https://reader033.fdocuments.ec/reader033/viewer/2022042816/558897abd8b42a547d8b45fc/html5/thumbnails/5.jpg)
Intenciones y Servicios 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)
![Page 6: Tema](https://reader033.fdocuments.ec/reader033/viewer/2022042816/558897abd8b42a547d8b45fc/html5/thumbnails/6.jpg)
Intenciones y Servicios 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
![Page 7: Tema](https://reader033.fdocuments.ec/reader033/viewer/2022042816/558897abd8b42a547d8b45fc/html5/thumbnails/7.jpg)
Intenciones y Servicios 7
Patrón de Diseño Singleton
● Una clase que tiene sólo un objeto
![Page 8: Tema](https://reader033.fdocuments.ec/reader033/viewer/2022042816/558897abd8b42a547d8b45fc/html5/thumbnails/8.jpg)
Intenciones y Servicios 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
![Page 9: Tema](https://reader033.fdocuments.ec/reader033/viewer/2022042816/558897abd8b42a547d8b45fc/html5/thumbnails/9.jpg)
Intenciones y Servicios 9
YambaSingleton (I)
![Page 10: Tema](https://reader033.fdocuments.ec/reader033/viewer/2022042816/558897abd8b42a547d8b45fc/html5/thumbnails/10.jpg)
Intenciones y Servicios 10
YambaSingleton (II)
![Page 11: Tema](https://reader033.fdocuments.ec/reader033/viewer/2022042816/558897abd8b42a547d8b45fc/html5/thumbnails/11.jpg)
Intenciones y Servicios 11
StatusActivity (I)
![Page 12: Tema](https://reader033.fdocuments.ec/reader033/viewer/2022042816/558897abd8b42a547d8b45fc/html5/thumbnails/12.jpg)
Intenciones y Servicios 12
StatusActivity (II)
![Page 13: Tema](https://reader033.fdocuments.ec/reader033/viewer/2022042816/558897abd8b42a547d8b45fc/html5/thumbnails/13.jpg)
Intenciones y Servicios 13
StatusActivity (III)
![Page 14: Tema](https://reader033.fdocuments.ec/reader033/viewer/2022042816/558897abd8b42a547d8b45fc/html5/thumbnails/14.jpg)
Intenciones y Servicios 14
StatusActivity (IV)
![Page 15: Tema](https://reader033.fdocuments.ec/reader033/viewer/2022042816/558897abd8b42a547d8b45fc/html5/thumbnails/15.jpg)
Intenciones y Servicios 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)
![Page 16: Tema](https://reader033.fdocuments.ec/reader033/viewer/2022042816/558897abd8b42a547d8b45fc/html5/thumbnails/16.jpg)
Intenciones y Servicios 19
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
![Page 17: Tema](https://reader033.fdocuments.ec/reader033/viewer/2022042816/558897abd8b42a547d8b45fc/html5/thumbnails/17.jpg)
Intenciones y Servicios 20
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
![Page 18: Tema](https://reader033.fdocuments.ec/reader033/viewer/2022042816/558897abd8b42a547d8b45fc/html5/thumbnails/18.jpg)
Intenciones y Servicios 21
Servicios
●
Usado de fondo
Invocado por otra aplicación, se crea (bind) una conexión permanente con el
servicio
![Page 19: Tema](https://reader033.fdocuments.ec/reader033/viewer/2022042816/558897abd8b42a547d8b45fc/html5/thumbnails/19.jpg)
Intenciones y Servicios 22
UpdaterService
- START_STICKY es el modo 'ejecutado de fondo', debe ser lanzado y parado- START_NOT_STICKY es
lanzado por un cliente (bind)
![Page 20: Tema](https://reader033.fdocuments.ec/reader033/viewer/2022042816/558897abd8b42a547d8b45fc/html5/thumbnails/20.jpg)
Intenciones y Servicios 23
AndroidManifest.xml
![Page 21: Tema](https://reader033.fdocuments.ec/reader033/viewer/2022042816/558897abd8b42a547d8b45fc/html5/thumbnails/21.jpg)
Intenciones y Servicios 24
Lanzar / Parar servicio
● Añadimos opciones para que se pueda lanzar / parar servicio– Editamos res/menu/menu.xml– Actualizamos onOptionsItemSelected de
StatusActivity
![Page 22: Tema](https://reader033.fdocuments.ec/reader033/viewer/2022042816/558897abd8b42a547d8b45fc/html5/thumbnails/22.jpg)
Intenciones y Servicios 25
res/menu/menu.xml
![Page 23: Tema](https://reader033.fdocuments.ec/reader033/viewer/2022042816/558897abd8b42a547d8b45fc/html5/thumbnails/23.jpg)
Intenciones y Servicios 26
StatusActivity
En res/values/strings.xml
![Page 24: Tema](https://reader033.fdocuments.ec/reader033/viewer/2022042816/558897abd8b42a547d8b45fc/html5/thumbnails/24.jpg)
Intenciones y Servicios 27
Probamos...
![Page 25: Tema](https://reader033.fdocuments.ec/reader033/viewer/2022042816/558897abd8b42a547d8b45fc/html5/thumbnails/25.jpg)
Intenciones y Servicios 28
Menu
![Page 26: Tema](https://reader033.fdocuments.ec/reader033/viewer/2022042816/558897abd8b42a547d8b45fc/html5/thumbnails/26.jpg)
Intenciones y Servicios 29
Comprobar
LogCat View:
![Page 27: Tema](https://reader033.fdocuments.ec/reader033/viewer/2022042816/558897abd8b42a547d8b45fc/html5/thumbnails/27.jpg)
Intenciones y Servicios 30
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
![Page 28: Tema](https://reader033.fdocuments.ec/reader033/viewer/2022042816/558897abd8b42a547d8b45fc/html5/thumbnails/28.jpg)
Intenciones y Servicios 31
UpdaterService2 (I)
![Page 29: Tema](https://reader033.fdocuments.ec/reader033/viewer/2022042816/558897abd8b42a547d8b45fc/html5/thumbnails/29.jpg)
Intenciones y Servicios 32
UpdaterService2 (II)
![Page 30: Tema](https://reader033.fdocuments.ec/reader033/viewer/2022042816/558897abd8b42a547d8b45fc/html5/thumbnails/30.jpg)
Intenciones y Servicios 33
UpdaterService2 (III)
![Page 31: Tema](https://reader033.fdocuments.ec/reader033/viewer/2022042816/558897abd8b42a547d8b45fc/html5/thumbnails/31.jpg)
Intenciones y Servicios 34
Cambio referencias
StatusActivity6.java
AndroidManifest.xml
![Page 32: Tema](https://reader033.fdocuments.ec/reader033/viewer/2022042816/558897abd8b42a547d8b45fc/html5/thumbnails/32.jpg)
Intenciones y Servicios 35
Run As...
![Page 33: Tema](https://reader033.fdocuments.ec/reader033/viewer/2022042816/558897abd8b42a547d8b45fc/html5/thumbnails/33.jpg)
Intenciones y Servicios 36
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
![Page 34: Tema](https://reader033.fdocuments.ec/reader033/viewer/2022042816/558897abd8b42a547d8b45fc/html5/thumbnails/34.jpg)
Intenciones y Servicios 37
YambaSingleton2
![Page 35: Tema](https://reader033.fdocuments.ec/reader033/viewer/2022042816/558897abd8b42a547d8b45fc/html5/thumbnails/35.jpg)
Intenciones y Servicios 38
UpdaterService3 (I)
![Page 36: Tema](https://reader033.fdocuments.ec/reader033/viewer/2022042816/558897abd8b42a547d8b45fc/html5/thumbnails/36.jpg)
Intenciones y Servicios 39
UpdaterService (II)
![Page 37: Tema](https://reader033.fdocuments.ec/reader033/viewer/2022042816/558897abd8b42a547d8b45fc/html5/thumbnails/37.jpg)
Intenciones y Servicios 40
UpdaterService (III)
![Page 38: Tema](https://reader033.fdocuments.ec/reader033/viewer/2022042816/558897abd8b42a547d8b45fc/html5/thumbnails/38.jpg)
Intenciones y Servicios 41
UpdaterService (IV)
![Page 39: Tema](https://reader033.fdocuments.ec/reader033/viewer/2022042816/558897abd8b42a547d8b45fc/html5/thumbnails/39.jpg)
Intenciones y Servicios 42
Probamos...
Si hacemos versiones, cambiamos en StatusActivity y AndroidManifest.xml
![Page 40: Tema](https://reader033.fdocuments.ec/reader033/viewer/2022042816/558897abd8b42a547d8b45fc/html5/thumbnails/40.jpg)
Intenciones y Servicios 43
Lo que llevamos hecho...
![Page 41: Tema](https://reader033.fdocuments.ec/reader033/viewer/2022042816/558897abd8b42a547d8b45fc/html5/thumbnails/41.jpg)
Intenciones y Servicios 44
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
![Page 42: Tema](https://reader033.fdocuments.ec/reader033/viewer/2022042816/558897abd8b42a547d8b45fc/html5/thumbnails/42.jpg)
Intenciones y Servicios 45
¿Preguntas?