如何一个接一个地做多个AsyncTask?

时间:2014-08-04 04:28:29

标签: android multithreading android-asynctask

让我们说我有两个AsyncTask。 AsyncTask_A和AsyncTask_B。 我想只在AsyncTask_A完全完成时才执行AsyncTask_B。 我知道我可以在AsyncTask_A的postExecute()方法中执行AsyncTask_B。 但是......还有更好的方法吗?

2 个答案:

答案 0 :(得分:1)

在这种情况下,您应该创建一个类,该单元用于处理这些任务的排队(即其中的AsyncTasks列表),如果有任何正在运行的话,它将跟踪它们的排队,如果有的话,则将它们排队。然后在这些任务的postExecute()中,所有应该回调到队列对象以通知它们它们已经完成,然后在这个回调中它应该运行下一个AsyncTask。

这将允许您:

  1. 调用AsyncTaskA而无需始终运行AsyncTaskB(删除硬依赖项)
  2. 在轨道上添加更多AsyncTasks,因为管理这些任务的依赖性在队列对象上,而不是在AsyncTasks中

答案 1 :(得分:0)

Queue<ASyncTask> q;
AsyncTask_A async_a;
AsyncTask_B async_b;
q.add(async_a);
q.add(async_b);

while(!q.empty)
{
  AsyncTask task = q.pop();
  task.execute();
  while(task.isRunning())
  {
    Thread.sleep(SOME_MILLISECONDS) // You can use wait and notify here.instead of sleep
  }
}