我有一个调用多个异步请求的android函数。我想知道什么时候都完成了。我看到onPostExecute()但只告诉我一个人是否完成了。有没有办法做到这一点?
答案 0 :(得分:2)
也许最简单的方法是创建一个计数器变量,例如int taskCount
,并将其设置为执行前需要运行的AsyncTask
个数。然后创建一个递减计数器的方法,并从每个任务的onPostExecute()
方法调用它。当taskCount == 0
时,任务将完成。
一个非常简单的例子:
int taskCount;
private void startTasks()
{
Task task1 = new Task();
Task task2 = new Task();
Task task3 = new Task();
taskCount = 3;
task1.execute();
task2.execute();
task3.execute();
}
private void taskDone()
{
taskCount--;
if (taskCount == 0)
{
Toast.makeText(MainActivity.this, "All done!", 0).show();
}
}
private class Task extends AsyncTask <Void, Void, Void>
{
@Override
protected Void doInBackground(Void... args)
{
return null;
}
@Override
protected void onPostExecute(Void result)
{
taskDone();
}
}
答案 1 :(得分:0)
由于AsyncTask每次只执行每个任务1与处理程序相比,所以任务需要更长时间,如果使用处理程序,#Mike的答案仍然适用。