Necesito combinar dos listas, cada una de las cuales se devuelve después de su propia llamada Async. ¿Cómo se coordinan mejor las llamadas Async como estas? ¿Hay algún método SDK estándar para esperar hasta que se complete otra tarea asíncrona?Android Cómo sincronizar dos tareas asincrónicas?
Respuesta
Java tiene algunas cosas agradables, como la clase Futuro y los gustos. No sirve de nada describir este marco aquí hay muchos recursos en la red. Sin embargo, puede ser mejor tener una sola tarea asíncrona, de todos modos no hay necesidad de ejecutar dos tareas asíncronas al mismo tiempo. Puede hacer las dos partes en una sola doInBackground
execute()
llamada devuelve una instancia de AsyncTask
, puede guardar esta instancia para comprobar más tarde, si la tarea ha terminado o no llamando getStatus()
, por lo que el código se vería así:
final AsyncTask<...> first_task;
final AsyncTask<...> second_task;
public someMethod() {
first_task = new MyFirstAsyncTask().execute();
second_task = new MySecondAsyncTask().execute();
// other things
}
private class MyFirstTask extends AsyncTask<...> {
// business as usual
protected void onPostExecute(SomeData[] result) {
if(second_task != null && second_task.get_status() == AsyncTask.Status.FINISHED) {
// start the task to combine results
....
//
first_task = second_task = null;
}
}
}
private class MySecondTask extends AsyncTask<...> {
// business as usual
protected void onPostExecute(SomeData[] result) {
if(first_task != null && first_task.get_status() == AsyncTask.Status.FINISHED) {
// start the task to combine results
....
//
first_task = second_task = null;
}
}
}
y la tarea, que termina por último, puede iniciar la nueva tarea para combinar los resultados.
Eso realmente depende de la necesidad.
¿Necesita esperar todos los datos para llegar? Si no solo haga una llamada a su función con función de bloqueo sincronizado en su actividad
En caso afirmativo, ¿espera que funcionen solo una vez; por lo tanto, dos (o X) en total? tal vez pueda verificar: CoundDownLacth (http://developer.android.com/reference/java/util/concurrent/CountDownLatch.html)
- 1. ¿Cómo sincronizar tareas?
- 2. Sincronizar dos ScrollView
- 3. Cómo sincronizar dos repositorios git
- 4. Sincronizar dos carpetas con MSBUILD
- 5. ¿Cómo sincronizar dos diagramas de Mysql Workbench?
- 6. ¿Cómo sincronizar dos repositorios de Subversion?
- 7. ¿Cómo sincronizar tareas en diferentes colas de distribución?
- 8. Actividades síncronas y asincrónicas
- 9. .NET: Mecanismo para sincronizar tareas de larga ejecución
- 10. MVC en Android: ¿aplicación o servicio para actualizaciones asincrónicas?
- 11. Sincronizar la posición de dos vistas ScrollView
- 12. Cómo escribir consultas asincrónicas LINQ?
- 13. ¿Cómo sincronizar dos valores de formulario de cuadro de texto?
- 14. ¿Jedis admite operaciones asincrónicas
- 15. Llamadas cuBLAS asincrónicas
- 16. Ejecutar dos tareas independientes simultáneamente usando hilos
- 17. Cómo iniciar una actividad Administrar cuentas/Sincronizar configuración en Android?
- 18. Cómo codificar una operación "sincronizar ahora" en Android?
- 19. use hg para sincronizar mi proyecto entre mis dos computadoras
- 20. ¿Cómo combinar dos resultados de tareas en una tercera tarea?
- 21. ¿Sincronizar objetos entre dos sistemas dispares, mejor enfoque?
- 22. Sincronizar el esquema de dos bases de datos en MySQL
- 23. Apache Camel para llamadas asincrónicas
- 24. ¿Dónde manejo las excepciones asincrónicas?
- 25. Funciones asincrónicas en C# usando
- 26. Enmascaramiento anidado de excepciones asincrónicas
- 27. cómo sincronizar sqlite a Mysql
- 28. Cómo sincronizar sonidos usando SoundPool
- 29. C# Opciones asincrónicas para procesar una lista
- 30. ¿Sincronizar dispositivos Android a través del tiempo GPS?
¿Qué hay de combinar el trabajo de ambas tareas asíncronas en una sola? – dmon
O utilizando AsyncTask.executeOnExecutor (singleThreadPoolExecutor), maneje la ejecución de colas. – yorkw