Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android

Respuesta
 
Herramientas
  #1  
Viejo 09/02/15, 14:15:27
Array

[xs_avatar]
DaSound DaSound no está en línea
Desarrollador
· Votos compra/venta: (1)
 
Fecha de registro: oct 2008
Localización: Madrid
Mensajes: 8,578
Modelo de smartphone: iPhone X 256GB / iPad Pro 10.5 / iPhone 6s Plus /
Tu operador: Movistar
ProgressDialog no se ve en tarea asíncrona por culpa del get().

Buenas a todos.

Resulta que tengo una tarea asíncrona que descarga una serie de imágenes de internet desde una lista de urls que yo le paso previamente.

El tema es que funciona perfectamente, pero quiero mostrar un diálogo de progreso para que no se quede la app congelada hasta su carga, el problema es el siguiente:

Si se hace un ".get()" para obtener los datos de la tarea asíncrona, el progressDialog no se ve, porque el método get para el hilo de la UI, con lo que la deja colgada hasta que termina.

La solución parece ser no utilizar el get, pero no consigo implementar una solución que haga el trabajo sin este método. Por lo que he podido leer, se debería utilizar un callback llamado desde el postExecute, pero no sé porqué, no me sale implementarlo... ¿Alguno lo habéis hecho y os ha funcionado?

Gracias de antemano!!
__________________
Apple 
Responder Con Cita


  #2  
Viejo 09/02/15, 20:05:38
Array

[xs_avatar]
mocelet mocelet no está en línea
Desarrollador
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -

http://www.sgoliver.net/blog/tareas-...d-y-asynctask

Concretamente te interesa la parte donde habla del publishProgress, que tendrás que llamarlo cada vez que se baje correctamente un fichero.

Supongo que en el doInBackground tendrás un bucle, en cada iteración llamas al publishProgress con el número de ficheros que llevas.

Y en el onProgressUpdate actualizas la barra de progreso.
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!
Responder Con Cita
Gracias de parte de:
  #3  
Viejo 09/02/15, 21:18:00
Array

[xs_avatar]
DaSound DaSound no está en línea
Desarrollador
· Votos compra/venta: (1)
 
Fecha de registro: oct 2008
Localización: Madrid
Mensajes: 8,578
Modelo de smartphone: iPhone X 256GB / iPad Pro 10.5 / iPhone 6s Plus /
Tu operador: Movistar
Gracias mocelet!!

No tengo barra de progreso, tengo un diálogo que indica que se está procesando el trabajo, no necesito actualizar el porcentaje. Concretamente, mi tarea asíncrona recibe una lista de strings, que son las urls de las imágenes, y devuelve un List<Bitmap> que, efectivamente, es generado en un bucle en el doInBackground()... mi duda es... como lo hago si tengo que devolver un objeto... si la tarea únicamente realizara un trabajo sin tener que recuperar ningún dato era sencillo, porque no tengo que hacer el get(), con el execute me vale y sí se ve el diálogo, pero con el get no... esa es mi duda, como hago el get dentro de la tarea asíncrona y devulevo el objeto List<Bitmap> si solo ejecuto la sentencia "execute" desde la MainActivity.
__________________
Apple 
Responder Con Cita
  #4  
Viejo 09/02/15, 22:18:32
Array

[xs_avatar]
mocelet mocelet no está en línea
Desarrollador
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -

Vale, no entendía el problema. El resultado te lo da el onPostExecute cuando lo tenga.

Solo necesitas un callback en tu actividad para que el onPostExecute lo llame.

Por no escribir lo mismo, mira la respuesta aceptada http://stackoverflow.com/questions/1...asynctask-is-a

EDIT: Si tu async task es una clase interna no tienes que andar extendiendo la clase y creando la interfaz, simplemente hacer la llamada desde onPostExecute. Imagino que no es tu caso
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!

Última edición por mocelet Día 09/02/15 a las 22:28:56.
Responder Con Cita
Gracias de parte de:
  #5  
Viejo 10/02/15, 21:53:31
Array

[xs_avatar]
DaSound DaSound no está en línea
Desarrollador
· Votos compra/venta: (1)
 
Fecha de registro: oct 2008
Localización: Madrid
Mensajes: 8,578
Modelo de smartphone: iPhone X 256GB / iPad Pro 10.5 / iPhone 6s Plus /
Tu operador: Movistar
 Cita: Originalmente Escrito por mocelet Ver Mensaje
Vale, no entendía el problema. El resultado te lo da el onPostExecute cuando lo tenga.

Solo necesitas un callback en tu actividad para que el onPostExecute lo llame.

Por no escribir lo mismo, mira la respuesta aceptada http://stackoverflow.com/questions/1...asynctask-is-a

EDIT: Si tu async task es una clase interna no tienes que andar extendiendo la clase y creando la interfaz, simplemente hacer la llamada desde onPostExecute. Imagino que no es tu caso
Exactamente, ese era el problema... con esa respuesta que me has enviado le he dado solución... muchas gracias por todo compañero!
__________________
Apple 
Responder Con Cita
Respuesta

Estás aquí
Regresar   Portal | Indice > Todo sobre Android > Programación y Desarrollo para Android



Hora actual: 15:43:20 (GMT +2)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /