|
||
|
![]() |
![]() |
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 |
![]() |
|
Herramientas |
#1
|
||||
|
||||
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
|
|
#2
|
||||
|
||||
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!
|
Gracias de parte de: | ||
#3
|
||||
|
||||
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
|
#4
|
||||
|
||||
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. |
Gracias de parte de: | ||
#5
|
||||
|
||||
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 ![]()
__________________
Apple
|
![]() |
![]() |
||||||
|
Herramientas | |