0

我想知道异步任务和线程之间的关系?每一个都创建一个新的,是否缓存,池化。

4

2 回答 2

3

默认情况下,Asynctask 使用串行执行器,因此使用单个线程在单个进程中执行所有 asynctask。但是你可以改变它。

检查文档

从 HONEYCOMB 开始,任务恢复到在单个线程上执行,以避免并行执行导致的常见应用程序错误。如果你真的想要并行执行,你可以使用这个方法的 executeOnExecutor(Executor, Params...) 版本和 THREAD_POOL_EXECUTOR;

您还可以在此处查看 Asynctask 的来源

于 2012-09-26T16:41:00.663 回答
0

从 Android 文档本身来看,AsyncTasks 允许“无痛多线程”,因此 AsyncTasks 显然在后台使用线程。

我最近使用 Eclipse 中的 DDMS 插件分析了我的应用程序,该应用程序会定期(并且非常接近)间隔启动 AsyncTasks。使用 DDMS,您可以查看当前运行的线程数及其名称。

从我那里看到,AsyncTasks 使用线程池来管理 AsyncTasks。就我而言,有 5 个线程分别命名为“AsyncTask #1”到“AsyncTask #5”,在一个循环中一个接一个地激活。

希望这能回答您的部分问题!

于 2012-09-26T16:49:51.360 回答