Ver Mensaje Individual
  #6  
Viejo 15/09/15, 16:35:33
Avatar de kriogeN
kriogeN kriogeN no está en línea
Colaborador/a
Mensajes: 4,637
Compra y venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Versión de ROM: CM13 - CM 11
Tu operador: Vodafone
Mencionado: 60 comentarios
Tagged: 3 hilos
Cita:
Originalmente Escrito por javichechu Ver Mensaje
Eso de las banderas me interesa...
¿Me puedes dar algo más de detalle o por Bandera te refieres a un booleano y listo?? Porque veo que los AsyncTask tienen una comprobación de su estado, si está running y demás, pero no consigo hacerlo con eso y algún sleep

Por bandera me refiero a un booleano, si.

Imagina que tus procesos son solo 2, descargar los datos y descargar imágenes, y cada una lo haces en 2 AsyncTask distintos. Hasta que no terminen ambos no muestras la siguiente Activity.

Tienes un método llamado lanzarActivity() (por simplificar) y 2 Booleanos globales en tu Activity, uno llamado "terminaDatos" y el otro "terminaImagenes", ambos inicializados a false.

En el onPostExecute de la descarga de los datos haces:

terminaDatos = true;
if (terminaImagenes)
{
lanzarActivity();
}

Y en el onPostExecute() de la descarga de imágenes tienes el contrario:

terminaImagenes = true;
if (terminaDatos)
{
lanzarActivity();
}

Como los onPostExecute siempre se ejecutan en primer plano no hay problemas de concurrencia, hasta que no termine uno no empezará el otro. Con lo cual tu Activity sólo se lanzará 1 vez, aquella que termine la última.

NOTA: No pongo "terminaImagenes && terminaDatos" en los "if" (que es lo que de verdad debería lanzar la Activity) porque ya se establecen a true en su propio onPostExecute, con lo cual es un absurdo porque siempre son "true", pero si quieres ponerlo por claridad de código no está mal.
Responder Con Cita