SlideShare una empresa de Scribd logo
1 de 36
Descargar para leer sin conexión
Análisis y Diseño
      de Software

Ejemplo
ListaCompra

      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



                 Ejemplo Lista de la Compra   2
Objetivos
●   Aplicar los conceptos aprendidos en una
    aplicación de ejemplo: una lista de la
    compra
●   Repaso
    –   Patrones Singleton / DAO
    –   AsyncTask
    –   Intenciones para pasar de una actividad a otra


                             Ejemplo Lista de la Compra   3
¿Qué vamos a hacer?




         Ejemplo Lista de la Compra   4
Arquitectura




      Ejemplo Lista de la Compra   5
Producto



               ...
Genero (y reviso getters/setters,
constructor, equals(), toString()




                                    Ejemplo Lista de la Compra   6
Repaso
    Patrón de Diseño Singleton
●   Una clase que tiene sólo un objeto




                        Ejemplo Lista de la Compra   7
Repaso
        Patrón de Diseño DAO
●   DAO (Data Access Object)
●   Un DAO contiene una conexión a una base
    de datos y sus operaciones básicas,
    ocultando su implementación
●   En nuestro caso, StatusData sigue el
    patrón DAO del valor Status de Twitter



                         Ejemplo Lista de la Compra   8
En nuestro problema...
●   Queremos tener sólo una lista... (singleton)
●   Pero realmente queremos un DAO, si
    siguiéramos con la aplicación, tendríamos
    una base de datos de productos
●    Vamos a seguir el patrón singleton, de
    forma que esta clase sea la responsable de
     devolvernos la lista, y de actualizarla


                         Ejemplo Lista de la Compra   9
ListaSingleton




      Ejemplo Lista de la Compra   10
DetalleProductoActivity




Programo clases privadas MiButtonSaveOnClickListener y
   MiButtonCancelOnClickListener que implementan
   View.OnClickLiistener, ahora mismo no hace nada.

                                Ejemplo Lista de la Compra   11
Repaso
Crear Lista Opciones



                      ListView para ver una lista
                      @android:id/list → layout
                        de Android para listas



               @android:id/empty → si la
                   lista está vacía



          Ejemplo Lista de la Compra                12
Repaso
Crear Lista opciones
                                 ListActivity en vez
                                     de Activity


                                 Fuente de datos

                                 Adaptador de lista,
                                 simple_list_item_1
                                  está predefinido




                              Listener de la
                                selección
          Ejemplo Lista de la Compra                   13
ListaCompraActivity




                                         Conmuto a otra actividad




http://developer.android.com/reference/android/widget/ArrayAdapter.html

                            Ejemplo Lista de la Compra                    14
Ejecutamos...




      Ejemplo Lista de la Compra   15
Rellenamos...




      Ejemplo Lista de la Compra   16
Probamos...




     Ejemplo Lista de la Compra   17
Análisis...
●   Ha funcionado que desde
    ListaCompraActivity la intención me lleva
    a DetalleProductoActivity...
●   Tenemos ahora que procesar esa intención
    para rellenar los campos




                        Ejemplo Lista de la Compra   18
DetalleProductoActivity (I)




             Ejemplo Lista de la Compra   19
DetalleProductoActivity (II)




              Ejemplo Lista de la Compra   20
Pruebo...




          ¡No cambia :(!


    Ejemplo Lista de la Compra   21
Repaso
Ciclo vida de Actividad




                             Ejemplo Lista de la Compra             22
 http://developer.android.com/reference/android/app/Activity.html
Repaso
         Estados de actividad
●   onCreate(Bundle saveInstanceState) - al
    crearse
●   onStart() - justo antes de que sea visible
●   onResume() - es visible y 'se reactiva'
●    onPause() - otra actividad va a tomar el
    foco y ésta va a ser pausada
●   onStop() - no es visible, está parada
●   onDestroy() - se va a destruir
                          Ejemplo Lista de la Compra   23
ListaCompraActivity




         Ejemplo Lista de la Compra   24
Pruebo...




           ¡Cambia :)!


    Ejemplo Lista de la Compra   25
Nueva funcionalidad
         ●   Vamos a cargar las
             ofertas del día
             –   Se conecta a varias
                 webs y tarda en
                 analizar las páginas
                 HTML (lo
                 simulamos)
         ●   Y ordenar
             alfabéticamente

         Ejemplo Lista de la Compra     26
Usando AsyncTask
●   Usar las hebras directamente es tedioso
●   Android proporciona AsyncTask
    –   Permite crear una hebra de fondo que publica
        en la hebra UI sin tener que programar
        Threads o Handlers
    –   Definimos una tarea 'asíncrona' que se ejecuta
        de fondo y publica sus resultados en la hebra
        UI


                             Ejemplo Lista de la Compra   27
AsyncTask – Uso básico
● Hebras:UI Thread (UITh) y Background Thread
 (BGTh, la AsyncTask)
●Tipos   genéricos: Params, Progress, Result
● Estados   principales
  –   onPreExecute (UITh)
  –   doInBackground (BGTh)
  –   onProgressUpdate(UITh)
  –   onPostExecutre(UITh)
● Método    auxiliar
  –   publishProgress (BGTh)
                               Ejemplo Lista de la Compra   28
AsyncTask
●   Una AsyncTask tiene 3 tipos genéricos
●   AsyncTask<Params, Progress, Result>
    –   Params – tipo de parámetros enviados a la
        tarea para su ejecución
    –   Progress – tipo de las unidades de progreso
        publicadas durante su ejecución
    –   Result – resultado de la ejecución de la tarea
●   Si no usamos un tipo, lo ponemos Void (con
    V)
                              Ejemplo Lista de la Compra   29
Métodos de AsyncTask
       ● onPreExecute():   invocado por
        UIth justo tras ejecutar la tarea
       ● doInBackground(Params)    –
        invocado por BGTh justo tras
        onPreExecute
       ● onProgressUpdate(Progress)         –
        invocado por UITh tras una
        llamada de BGTh a
        publishProgress(Progress)
       ● onPostExecute(Result)    invocado
        por UITh justo tras terminar BGTh

            Ejemplo Lista de la Compra          30
AsyncTask
●   Puedo saber si está en funcionamiento con
    el método getStatus()




                        Ejemplo Lista de la Compra   31
ListCompraActivity




… métodos




            Ejemplo Lista de la Compra   32
ActualizaCompraTask




         Ejemplo Lista de la Compra   33
ActualizaCompraTask (I)




           Ejemplo Lista de la Compra   34
ActualizaCompraTask (II)




            Ejemplo Lista de la Compra   35
Análisis...
●   Carga varias veces los mismos
    productos...
●   Permite conmutar al detalle aunque
    hayamos lanzado la tarea (no es
    necesariamente malo)




                        Ejemplo Lista de la Compra   36

Más contenido relacionado

Similar a Tema 5 ejemplo_lista_compra

Tema 4 3_3_interfaces_de_usuario
Tema 4 3_3_interfaces_de_usuarioTema 4 3_3_interfaces_de_usuario
Tema 4 3_3_interfaces_de_usuarioCarlos A. Iglesias
 
A2-Tema4.pdf
A2-Tema4.pdfA2-Tema4.pdf
A2-Tema4.pdfAlMoon5
 
Java8 : Más allá de las Expresiones Lambdas
Java8 :  Más allá de las Expresiones LambdasJava8 :  Más allá de las Expresiones Lambdas
Java8 : Más allá de las Expresiones LambdasEudris Cabrera
 
Funciones store proc_triggers
Funciones store proc_triggersFunciones store proc_triggers
Funciones store proc_triggersLuis Jherry
 
Cómo implementar un sistema de documentación viva (published)
Cómo implementar un sistema de documentación viva (published)Cómo implementar un sistema de documentación viva (published)
Cómo implementar un sistema de documentación viva (published)Fernando Poblete
 
Desarrollando mi primera App para Windows 8 con C#
Desarrollando mi primera App para Windows 8 con C#Desarrollando mi primera App para Windows 8 con C#
Desarrollando mi primera App para Windows 8 con C#Vicente Gerardo Guzman Lucio
 
Taller de introducción al desarrollo web con Django
Taller de introducción al desarrollo web con DjangoTaller de introducción al desarrollo web con Django
Taller de introducción al desarrollo web con DjangoJuan Rodríguez
 
Rompiendo dependencias contenidas en ensamblados .NET mediante la refactoriza...
Rompiendo dependencias contenidas en ensamblados .NET mediante la refactoriza...Rompiendo dependencias contenidas en ensamblados .NET mediante la refactoriza...
Rompiendo dependencias contenidas en ensamblados .NET mediante la refactoriza...jaircazarin
 
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
 
Funciones store proc_triggers
Funciones store proc_triggersFunciones store proc_triggers
Funciones store proc_triggersLuis Jherry
 
Clean Code (Presentacion interna en Virtual Software)
Clean Code (Presentacion interna en Virtual Software)Clean Code (Presentacion interna en Virtual Software)
Clean Code (Presentacion interna en Virtual Software)jmiguel rodriguez
 
02401 04-509376nomivkzutz
02401 04-509376nomivkzutz02401 04-509376nomivkzutz
02401 04-509376nomivkzutzgiomar_alvarezc
 
Desarrollo android - 4 - arquitectura de aplicación
Desarrollo android  - 4 - arquitectura de aplicaciónDesarrollo android  - 4 - arquitectura de aplicación
Desarrollo android - 4 - arquitectura de aplicaciónEmilio Aviles Avila
 

Similar a Tema 5 ejemplo_lista_compra (20)

Tema 4 3_3_interfaces_de_usuario
Tema 4 3_3_interfaces_de_usuarioTema 4 3_3_interfaces_de_usuario
Tema 4 3_3_interfaces_de_usuario
 
A2-Tema4.pdf
A2-Tema4.pdfA2-Tema4.pdf
A2-Tema4.pdf
 
Java8 : Más allá de las Expresiones Lambdas
Java8 :  Más allá de las Expresiones LambdasJava8 :  Más allá de las Expresiones Lambdas
Java8 : Más allá de las Expresiones Lambdas
 
Sistemas de control de versiones
Sistemas de control de versionesSistemas de control de versiones
Sistemas de control de versiones
 
Funciones store proc_triggers
Funciones store proc_triggersFunciones store proc_triggers
Funciones store proc_triggers
 
Ajax: introducción
Ajax: introducciónAjax: introducción
Ajax: introducción
 
Cómo implementar un sistema de documentación viva (published)
Cómo implementar un sistema de documentación viva (published)Cómo implementar un sistema de documentación viva (published)
Cómo implementar un sistema de documentación viva (published)
 
Desarrollando mi primera App para Windows 8 con C#
Desarrollando mi primera App para Windows 8 con C#Desarrollando mi primera App para Windows 8 con C#
Desarrollando mi primera App para Windows 8 con C#
 
Taller de introducción al desarrollo web con Django
Taller de introducción al desarrollo web con DjangoTaller de introducción al desarrollo web con Django
Taller de introducción al desarrollo web con Django
 
Introducción a Mongo.pptx
Introducción a Mongo.pptxIntroducción a Mongo.pptx
Introducción a Mongo.pptx
 
Graficas matlab
Graficas matlabGraficas matlab
Graficas matlab
 
Matlab
MatlabMatlab
Matlab
 
Matlab
MatlabMatlab
Matlab
 
Rompiendo dependencias contenidas en ensamblados .NET mediante la refactoriza...
Rompiendo dependencias contenidas en ensamblados .NET mediante la refactoriza...Rompiendo dependencias contenidas en ensamblados .NET mediante la refactoriza...
Rompiendo dependencias contenidas en ensamblados .NET mediante la refactoriza...
 
Tema 4 4_1_intenciones_servicios
Tema 4 4_1_intenciones_serviciosTema 4 4_1_intenciones_servicios
Tema 4 4_1_intenciones_servicios
 
Funciones store proc_triggers
Funciones store proc_triggersFunciones store proc_triggers
Funciones store proc_triggers
 
Operadores poo
Operadores pooOperadores poo
Operadores poo
 
Clean Code (Presentacion interna en Virtual Software)
Clean Code (Presentacion interna en Virtual Software)Clean Code (Presentacion interna en Virtual Software)
Clean Code (Presentacion interna en Virtual Software)
 
02401 04-509376nomivkzutz
02401 04-509376nomivkzutz02401 04-509376nomivkzutz
02401 04-509376nomivkzutz
 
Desarrollo android - 4 - arquitectura de aplicación
Desarrollo android  - 4 - arquitectura de aplicaciónDesarrollo android  - 4 - arquitectura de aplicación
Desarrollo android - 4 - arquitectura de aplicación
 

Más de Carlos A. Iglesias (20)

GSI Research Group Presentation
GSI Research Group PresentationGSI Research Group Presentation
GSI Research Group Presentation
 
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.2 Desarrollo Android e instalacion
Tema 4.2 Desarrollo Android e instalacionTema 4.2 Desarrollo Android e instalacion
Tema 4.2 Desarrollo Android e instalacion
 
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
 

Último

Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfJulian Lamprea
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 

Último (10)

Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 

Tema 5 ejemplo_lista_compra

  • 1. Análisis y Diseño de Software Ejemplo ListaCompra 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 Ejemplo Lista de la Compra 2
  • 3. Objetivos ● Aplicar los conceptos aprendidos en una aplicación de ejemplo: una lista de la compra ● Repaso – Patrones Singleton / DAO – AsyncTask – Intenciones para pasar de una actividad a otra Ejemplo Lista de la Compra 3
  • 4. ¿Qué vamos a hacer? Ejemplo Lista de la Compra 4
  • 5. Arquitectura Ejemplo Lista de la Compra 5
  • 6. Producto ... Genero (y reviso getters/setters, constructor, equals(), toString() Ejemplo Lista de la Compra 6
  • 7. Repaso Patrón de Diseño Singleton ● Una clase que tiene sólo un objeto Ejemplo Lista de la Compra 7
  • 8. Repaso Patrón de Diseño DAO ● DAO (Data Access Object) ● Un DAO contiene una conexión a una base de datos y sus operaciones básicas, ocultando su implementación ● En nuestro caso, StatusData sigue el patrón DAO del valor Status de Twitter Ejemplo Lista de la Compra 8
  • 9. En nuestro problema... ● Queremos tener sólo una lista... (singleton) ● Pero realmente queremos un DAO, si siguiéramos con la aplicación, tendríamos una base de datos de productos ● Vamos a seguir el patrón singleton, de forma que esta clase sea la responsable de devolvernos la lista, y de actualizarla Ejemplo Lista de la Compra 9
  • 10. ListaSingleton Ejemplo Lista de la Compra 10
  • 11. DetalleProductoActivity Programo clases privadas MiButtonSaveOnClickListener y MiButtonCancelOnClickListener que implementan View.OnClickLiistener, ahora mismo no hace nada. Ejemplo Lista de la Compra 11
  • 12. Repaso Crear Lista Opciones ListView para ver una lista @android:id/list → layout de Android para listas @android:id/empty → si la lista está vacía Ejemplo Lista de la Compra 12
  • 13. Repaso Crear Lista opciones ListActivity en vez de Activity Fuente de datos Adaptador de lista, simple_list_item_1 está predefinido Listener de la selección Ejemplo Lista de la Compra 13
  • 14. ListaCompraActivity Conmuto a otra actividad http://developer.android.com/reference/android/widget/ArrayAdapter.html Ejemplo Lista de la Compra 14
  • 15. Ejecutamos... Ejemplo Lista de la Compra 15
  • 16. Rellenamos... Ejemplo Lista de la Compra 16
  • 17. Probamos... Ejemplo Lista de la Compra 17
  • 18. Análisis... ● Ha funcionado que desde ListaCompraActivity la intención me lleva a DetalleProductoActivity... ● Tenemos ahora que procesar esa intención para rellenar los campos Ejemplo Lista de la Compra 18
  • 19. DetalleProductoActivity (I) Ejemplo Lista de la Compra 19
  • 20. DetalleProductoActivity (II) Ejemplo Lista de la Compra 20
  • 21. Pruebo... ¡No cambia :(! Ejemplo Lista de la Compra 21
  • 22. Repaso Ciclo vida de Actividad Ejemplo Lista de la Compra 22 http://developer.android.com/reference/android/app/Activity.html
  • 23. Repaso Estados de actividad ● onCreate(Bundle saveInstanceState) - al crearse ● onStart() - justo antes de que sea visible ● onResume() - es visible y 'se reactiva' ● onPause() - otra actividad va a tomar el foco y ésta va a ser pausada ● onStop() - no es visible, está parada ● onDestroy() - se va a destruir Ejemplo Lista de la Compra 23
  • 24. ListaCompraActivity Ejemplo Lista de la Compra 24
  • 25. Pruebo... ¡Cambia :)! Ejemplo Lista de la Compra 25
  • 26. Nueva funcionalidad ● Vamos a cargar las ofertas del día – Se conecta a varias webs y tarda en analizar las páginas HTML (lo simulamos) ● Y ordenar alfabéticamente Ejemplo Lista de la Compra 26
  • 27. Usando AsyncTask ● Usar las hebras directamente es tedioso ● Android proporciona AsyncTask – Permite crear una hebra de fondo que publica en la hebra UI sin tener que programar Threads o Handlers – Definimos una tarea 'asíncrona' que se ejecuta de fondo y publica sus resultados en la hebra UI Ejemplo Lista de la Compra 27
  • 28. AsyncTask – Uso básico ● Hebras:UI Thread (UITh) y Background Thread (BGTh, la AsyncTask) ●Tipos genéricos: Params, Progress, Result ● Estados principales – onPreExecute (UITh) – doInBackground (BGTh) – onProgressUpdate(UITh) – onPostExecutre(UITh) ● Método auxiliar – publishProgress (BGTh) Ejemplo Lista de la Compra 28
  • 29. AsyncTask ● Una AsyncTask tiene 3 tipos genéricos ● AsyncTask<Params, Progress, Result> – Params – tipo de parámetros enviados a la tarea para su ejecución – Progress – tipo de las unidades de progreso publicadas durante su ejecución – Result – resultado de la ejecución de la tarea ● Si no usamos un tipo, lo ponemos Void (con V) Ejemplo Lista de la Compra 29
  • 30. Métodos de AsyncTask ● onPreExecute(): invocado por UIth justo tras ejecutar la tarea ● doInBackground(Params) – invocado por BGTh justo tras onPreExecute ● onProgressUpdate(Progress) – invocado por UITh tras una llamada de BGTh a publishProgress(Progress) ● onPostExecute(Result) invocado por UITh justo tras terminar BGTh Ejemplo Lista de la Compra 30
  • 31. AsyncTask ● Puedo saber si está en funcionamiento con el método getStatus() Ejemplo Lista de la Compra 31
  • 32. ListCompraActivity … métodos Ejemplo Lista de la Compra 32
  • 33. ActualizaCompraTask Ejemplo Lista de la Compra 33
  • 34. ActualizaCompraTask (I) Ejemplo Lista de la Compra 34
  • 35. ActualizaCompraTask (II) Ejemplo Lista de la Compra 35
  • 36. Análisis... ● Carga varias veces los mismos productos... ● Permite conmutar al detalle aunque hayamos lanzado la tarea (no es necesariamente malo) Ejemplo Lista de la Compra 36