完成了异步任务的Android异步组

时间:2014-04-10 05:40:36

标签: android android-asynctask

我有一个调用多个异步请求的android函数。我想知道什么时候都完成了。我看到onPostExecute()但只告诉我一个人是否完成了。有没有办法做到这一点?

2 个答案:

答案 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的答案仍然适用。