Tema
Upcoming SlideShare
Loading in...5
×
 

Tema

on

  • 1,099 views

 

Statistics

Views

Total Views
1,099
Views on SlideShare
990
Embed Views
109

Actions

Likes
0
Downloads
30
Comments
0

1 Embed 109

https://moodle.lab.dit.upm.es 109

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Tema Tema Presentation Transcript

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