同时运行多个Asyntasks

时间:2013-09-23 18:53:08

标签: java android android-asynctask

我有一个问题,我根本无法理解!我有Asynctask连接到Web服务并下载一些数据。

但是当我这样做时,我的另一个Asynctasks等待这个Asynctask to finish his work even Asynctasks in other活动!! !!但我无法理解这一点。

我怎么能避免这个?我当时认为Asynctasks可以同时运行,但现在却没有!问题是什么?似乎REST和下载流数据会阻止整个应用程序。

2 个答案:

答案 0 :(得分:5)

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

来自documentation of AsyncTask

  

执行顺序

     

首次引入时,AsyncTasks在一个后台线程上连续执行。从DONUT开始,这被更改为一个线程池,允许多个任务并行运行。从HONEYCOMB开始,任务在单个线程上执行,以避免由并行执行引起的常见应用程序错误。

     

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

答案 1 :(得分:2)

使用executoOnExecutor

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

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