让我们说我有两个AsyncTask。 AsyncTask_A和AsyncTask_B。 我想只在AsyncTask_A完全完成时才执行AsyncTask_B。 我知道我可以在AsyncTask_A的postExecute()方法中执行AsyncTask_B。 但是......还有更好的方法吗?
答案 0 :(得分:1)
在这种情况下,您应该创建一个类,该单元用于处理这些任务的排队(即其中的AsyncTasks列表),如果有任何正在运行的话,它将跟踪它们的排队,如果有的话,则将它们排队。然后在这些任务的postExecute()中,所有应该回调到队列对象以通知它们它们已经完成,然后在这个回调中它应该运行下一个AsyncTask。
这将允许您:
答案 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
}
}