当我使用AsyncTasks
标记在我的视图中运行多个AsyncTask.THREAD_POOL_EXECUTOR
时,我发现同时运行的AsyncTasks
不超过两个AsyncTasks
。实际上当两个AsyncTask
完成他们的工作时,接下来两个开始。我还在github中尝试了这个AsyncTasks
测试项目。我得到了相同的结果,看着那里不再有两个{{1}}同时运行的logcat。
如何同时运行两个以上的asynctasks?
答案 0 :(得分:2)
首次引入时,AsyncTasks在单个上串行执行 背景线程。从DONUT开始,这被改成了一个池 允许多个任务并行运行的线程。从...开始 HONEYCOMB,任务在单个线程上执行以避免常见 并行执行导致的应用程序错误。
这意味着它们是在一个线程上执行的,这意味着,默认情况下,您一次只能激活一个 AsyncTask
。
但是,不要担心,文件进一步指出:
如果您真的想要并行执行,可以调用 executeOnExecutor(java.util.concurrent.Executor,Object [])with THREAD_POOL_EXECUTOR。
所以... new MyTask().executeOnExecutor( AsyncTask.THREAD_POOL_EXECUTOR );
会帮你解决问题。