1

我有一系列 asyncTask 一个接一个地执行以从服务器下载 pdf。但有时当我最小化应用程序然后恢复它(在后台下载)时,下一个 asyncTask 将在当前运行后不久执行asyncTask 卡在 preExcute 中。doInBackground 没有被执行。请帮忙。

4

1 回答 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 回答