【发布时间】:2014-04-14 02:58:04
【问题描述】:
我有一个调用多个异步请求的 android 函数。我想知道什么时候完成。我看到了 onPostExecute() 但这只会告诉我一个是否已经完成。有没有办法做到这一点?
【问题讨论】:
我有一个调用多个异步请求的 android 函数。我想知道什么时候完成。我看到了 onPostExecute() 但这只会告诉我一个是否已经完成。有没有办法做到这一点?
【问题讨论】:
也许最简单的方法是创建一个计数器变量,例如int taskCount,并将其设置为执行前需要运行的AsyncTasks 的数量。然后创建一个将递减计数器的方法,并从每个任务的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();
}
}
【讨论】:
由于与处理程序相比,AsyncTask 一次只执行每个任务 1,因此这些任务将花费更长的时间,如果您使用处理程序,#Mike 的答案仍然适用。
【讨论】: