【问题标题】:Android Async Group of Async Tasks finishedAndroid Async 异步任务组完成
【发布时间】:2014-04-14 02:58:04
【问题描述】:

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

【问题讨论】:

    标签: android android-asynctask


    【解决方案1】:

    也许最简单的方法是创建一个计数器变量,例如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();
        }
    }
    

    【讨论】:

      【解决方案2】:

      由于与处理程序相比,AsyncTask 一次只执行每个任务 1,因此这些任务将花费更长的时间,如果您使用处理程序,#Mike 的答案仍然适用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-08-07
        • 2013-05-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-01-17
        • 1970-01-01
        • 2019-03-20
        相关资源
        最近更新 更多