我有一系列 asyncTask 一个接一个地执行以从服务器下载 pdf。但有时当我最小化应用程序然后恢复它(在后台下载)时,下一个 asyncTask 将在当前运行后不久执行asyncTask 卡在 preExcute 中。doInBackground 没有被执行。请帮忙。
问问题
557 次
1 回答
2
这是 AsyncTasks 上的一个已知问题。AsyncTasks 的默认执行程序是SERIAL_EXECUTOR
. 您可以在此执行程序的队列中拥有 5 个 AsyncTask。之后,它将停止制作新的Threads
.
如果你这样做:
public void someMethod() {
new MyAsyncTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
它会在不同的执行器上运行您的 AsyncTasks,该执行器汇集您的线程。它的限制为 15。但最好的是,它并行运行线程SERIAL_EXECUTOR
并将它们放入队列中并一个接一个地执行它们。
于 2012-06-28T09:32:00.303 回答