我需要结合两个列表,每个列表都是在各自独立的异步调用之后返回的。如何最好地协调像这样的异步调用。是否有任何标准的SDK方法等待另一个异步任务完成?Android如何同步两个异步任务?
6
A
回答
0
Java有一些不错的东西,比如Future类和类似东西。这里没有用来描述这个框架的网上有很多资源。无论如何,只要有一个异步任务可能会更好,但实际上并不需要同时运行两个异步任务。你无法通过调用getStatus()
做这两部分在一个单一的doInBackground
5
调用返回的AsyncTask
一个实例,你可以保存这个实例后来检查,如果任务完成,或者,让你的代码看起来就像这样:
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;
}
}
}
并且最后完成的任务可以开始新任务以组合结果。
0
这真的取决于需求。
您是否需要等待所有数据才能到达?如果不是只是打电话哟您的功能与您的活动中的同步功能块
如果是,你期望他们只能工作一次;因此总共两个(或X)?也许你可以检查:CoundDownLacth(http://developer.android.com/reference/java/util/concurrent/CountDownLatch.html)
相关问题
- 1. 同步异步任务
- 2. Android两个连续的异步任务
- 3. 切换异步任务同步任务
- 4. android异步任务
- 5. 异步任务异常Android
- 6. 如何同步2个异步线程/任务
- 7. Spring MVC异步任务同步运行
- 8. 同步Objective-C中的异步任务
- 9. dispatch_sync(dispatch_get_global_queue(xxx),任务)同步或异步
- 10. 同步嵌套的异步任务
- 11. 异步任务从api的异步任务不运行异步
- 12. Android异步任务错误
- 13. 的Android异步任务NetworkOnMainThreadException
- 14. Android定时异步任务
- 15. android中的异步任务
- 16. 异步任务错误Android
- 17. Android错误异步任务
- 18. Android异步任务重用
- 19. GSON Android和异步任务
- 20. 的Android异步任务类
- 21. 异步任务android onPostExecute
- 22. Android异步任务状态
- 23. Android中的异步任务
- 24. 采用Android异步任务
- 25. 异步任务
- 26. 异步任务
- 27. 异步任务
- 28. 异步任务的片段1块另一个异步任务不同Fragment2
- 29. Android:同步响应Toast异步任务onpostexecute()
- 30. 将异步任务与阻塞同步任务混合使用
如何将两个asynctasks的工作结合在一起? – dmon 2012-04-23 21:07:18
或使用AsyncTask.executeOnExecutor(singleThreadPoolExecutor)处理排队执行。 – yorkw 2012-04-23 21:25:07