【问题标题】:Running multiple Asyntasks simultaneously [duplicate]同时运行多个Asyntasks [重复]
【发布时间】:2013-09-23 18:53:07
【问题描述】:

我有一个我完全无法理解的问题!我有一个Asynctask,它连接到网络服务并下载一些数据。

但是当我这样做时,我的另一个 Asynctasks 会等待这个 Asynctask to finish his work evenAsynctasksin otherActivity`!!。但我无法理解。

我怎样才能避免这种情况?我在想Asynctasks 可以同时运行,但现在不行了!问题是什么?似乎 REST 和下载流数据会阻塞整个应用程序。

【问题讨论】:

标签: java android android-asynctask


【解决方案1】:

如果您在 Android 3.0 或更高版本上运行,并且您使用 AsyncTask 的默认实现(即框架中的那个),它一次只会执行一个任务。但是,可以并行执行。见下文。

来自documentation of AsyncTask

执行顺序

首次引入时,AsyncTasks 在单个后台线程上串行执行。从DONUT 开始,这已更改为允许多个任务并行运行的线程池。从HONEYCOMB开始,任务在单线程上执行,避免并行执行导致的常见应用错误。

如果你真的想要并行执行,你可以调用executeOnExecutor(java.util.concurrent.Executor, Object[])THREAD_POOL_EXECUTOR

【讨论】:

    【解决方案2】:

    使用executoOnExecutor

    TheTask task = new TheTask();
    task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, params); 
    

    http://developer.android.com/reference/java/util/concurrent/Executor.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-04
      • 2023-03-17
      • 1970-01-01
      • 2012-12-17
      • 1970-01-01
      • 2021-09-10
      相关资源
      最近更新 更多