¿Cómo ejecutar varios AsyncTask a la vez?

499 views
Skip to first unread message

Jesús Rodríguez Layos

unread,
Apr 26, 2014, 2:41:16 PM4/26/14
to
Mi app hace lo siguiente:
  • Se conecta a un servidor y se descarga un JSON
  • Ese JSON lo almacena en una base de datos
  • Vuelve a conectarse al servidor para descargar otro JSON
  • De nuevo, almacena esos datos en la base de datos
  • Luego se descargar un RSS
  • Lo almacena
  • Y lo muestra
Todo eso lo hago con AsyncTask, pero claro, se lanzan todos 'casi' a la vez, y produce errores.
¿Qué puedo hacer para que cuando termine una acción, se ejecute otra y no todas a la vez?

Gabriel Pozo

unread,
Apr 26, 2014, 4:44:15 PM4/26/14
to desarrollad...@googlegroups.com
En el último caso, sería para que veas el código fuente, allí se van descargando las imágenes levantando una Async Task, por cada una ;)
Si lo queres hacer completamente vos, en resumen deberías buscar como manejar tu propio pool de conexiones ;)
Acá tenes algo de eso:
http://stackoverflow.com/a/9654445/1748764
http://stackoverflow.com/a/4072832/1748764




El 26 de abril de 2014, 15:40, Jesús Rodríguez Layos <taxm...@gmail.com> escribió:
Una pequeña duda.

--
Para participar es necesario que leas detenidamente las normas del grupo: http://goo.gl/8h8ez2
---
Has recibido este mensaje porque estás suscrito al grupo "desarrolladores-android" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a desarrolladores-a...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a desarrollad...@googlegroups.com.
Visita este grupo en http://groups.google.com/group/desarrolladores-android.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/desarrolladores-android/8ce4aa43-5258-4bb6-8153-84b7351f237d%40googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.



--
Saludos, Gabriel

http://aprendiendodeandroidymas.com/

Jesús Rodríguez Layos

unread,
Apr 26, 2014, 5:28:22 PM4/26/14
to desarrollad...@googlegroups.com

Gracias, pero ¿cómo puedo implementar RoboSpice?

Jaume Tugores

unread,
Apr 29, 2014, 5:45:29 PM4/29/14
to desarrollad...@googlegroups.com
Yo también soy novato, pero he hecho algo parecido a lo tuyo y lo he hecho de esta manera:
Dentro de un solo Asinctax, en el método doInBackground, he puesto variasl llamadas del tipo:
 HttpPost hPost = new HttpPost(urlxxx); , una detrás de la otra, recogiendo datos json y guardandolos en la bd sqlite y ha funcionado correctamente, uno detrás de la otra.
No se si es la manera adecuada, que lo digan los expertos, pero a mi me funciona.

Andres Villanueva

unread,
Apr 30, 2014, 3:53:55 PM4/30/14
to desarrollad...@googlegroups.com
Hola Jaume.
Como es el consumo de RAM de tú app utilizando este método que planteas? Ahí radica (a criterio personal) que tan optima es la implementación. 

Jaime Tugores

unread,
Apr 30, 2014, 4:52:34 PM4/30/14
to desarrollad...@googlegroups.com
Pues la aplicación arrancada, acupa unos 4 megas y después de haberse conectado y leido los json, llega a 6 megas, lo he mirado con la app memory booster.
--
Para participar es necesario que leas detenidamente las normas del grupo: http://goo.gl/8h8ez2
---
Has recibido este mensaje porque estás suscrito a un tema del grupo "desarrolladores-android" de Grupos de Google.
Para anular la suscripción a este tema, visita https://groups.google.com/d/topic/desarrolladores-android/yWmVsidwD-I/unsubscribe.
Para anular la suscripción a este grupo y a todos sus temas, envía un correo electrónico a desarrolladores-a...@googlegroups.com.

Para publicar en este grupo, envía un correo electrónico a desarrollad...@googlegroups.com.
Visita este grupo en http://groups.google.com/group/desarrolladores-android.

Para acceder a más opciones, visita https://groups.google.com/d/optout.


--
______________Saludos Jaume._________________



Este mensaje no contiene virus ni malware porque la protección de avast! Antivirus está activa.


Julián Marqués

unread,
May 15, 2014, 8:42:20 AM5/15/14
to desarrollad...@googlegroups.com
Igual llego tarde, pero para encadenar los AT siempre puedes lanzar el segundo en el método postexecute del primero y el tercero en el postexecute del segundo... etc etc.

Jimmy Sáenz

unread,
May 15, 2014, 10:49:57 AM5/15/14
to
Como dicen los colegas, una forma sencilla sería ir llamando cada asynctask siguiente en onPostExecute de la tarea actual. Yo optaría por crear un sistema sencillo de queue para que sea un poco más extensible. Casualmente hace unos días publiqué por aquí un proyecto de ejemplo que maneja la misma idea https://github.com/yesez5/HttpQueueRequestsSampleApp también podrías probar Groundy, yo nunca lo he usado pero según su wiki tiene soporte para encolamiento de tasks https://github.com/telly/groundy/wiki
Reply all
Reply to author
Forward
0 new messages