我有一个问题,我根本无法理解!我有Asynctask
连接到Web服务并下载一些数据。
但是当我这样做时,我的另一个Asynctasks
等待这个Asynctask to finish his work even
Asynctasks in other
活动!! !!但我无法理解这一点。
我怎么能避免这个?我当时认为Asynctasks
可以同时运行,但现在却没有!问题是什么?似乎REST和下载流数据会阻止整个应用程序。
答案 0 :(得分:5)
如果你在Android 3.0或更高版本上运行,并且你正在使用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