Yo tengo un Actividad A y una AsyncTask, que hace algunos cálculosy almacena datos en la base de datos. Estas operaciones toman alrededor de 3-5 segundos. Se llama a AsyncTask después de presionar un botón "Guardar" y se inicia la nueva Actividad B (esta Actividad B no es importante). También hay Actividad C, que carga datos, que almacené de la Actividad Ay AsyncTask. Y aquí está mi problema: si comienzo la Actividad C y AsyncTask todavía no terminó de almacenar datos, quiero mostrar la animación de carga hasta que AsyncTask termine y los datos se puedan cargar en la actividad.
Tengo una visión que AsyncTask en métodoonPostExecute cambiará la variable global "booleano terminado = verdadero" y después de iniciar la Actividad C, comprobaré periódicamente si la variable es verdadera. Pero creo que no es el camino correcto. Entonces, ¿cuál es la forma correcta? Gracias
Respuestas
0 para la respuesta № 1Lo que puede hacer en la Actividad C es verificar la base de datos en onResume
si su resultado esperado ya está allí ono. Si está allí, simplemente muestre su resultado. Si no está allí, muestre su ícono de carga y registre un receptor de transmisión que escuche un evento específico.
En onPostExecute
del AsyncTask
puedes transmitir ese evento específico. Cuando la actividad C recibe ese evento, simplemente puede volver a verificar la base de datos donde ahora estará el resultado.