【发布时间】:2012-06-15 13:44:36
【问题描述】:
我有一个使用大量 AsyncTasks 的应用程序,我遇到的问题是在我调用 execute 后的几分钟内没有启动一个特别重要的任务。
如果我将以下内容用于我的 ICS 设备,它可以工作;
if(Build.VERSION.SDK_INT >= 11)
{
myTask.executeOnExecutor( AsyncTask.THREAD_POOL_EXECUTOR, stuff );
}
与 pre-ICS 的情况相反;
myTask.execute(stuff);
我知道 ICS 已将线程执行更改为序列化,但我无法弄清楚是什么阻碍了线程队列。
在 Eclipse 中的调试中列出了大约 20 个线程,但我读到过,这可能是不正确的,因为调试器倾向于继续显示实际上并不存在的线程。
我如何确定哪些线程正在阻止序列化队列,这样我就不必从 ICS 上的默认值切换,甚至可能提高由于线程池执行器是默认行为。
【问题讨论】:
-
请不要将我的英式英语改成美式英语,当然也不要添加更多的印刷错误。 :D
-
启动所需的时间总是相同还是不同?
-
它是多种多样的,有时它会立即执行,正如预期的那样,其他我将不得不等待几分钟。尽管似乎没有中间时间,但它要么是即时的,要么是 x(未计算的)分钟。
标签: android android-asynctask threadpool android-4.0-ice-cream-sandwich