AsyncTask,RejectedExecutionException和Task Limit

Sam*_*muh 15 error-handling android android-asynctask

我使用AsyncTask从远程服务器获取大量缩略图并在网格视图中显示它们.问题是,我的网格视图一次显示20个缩略图,因此创建20个AsyncTasks并启动20个执行,每个缩略图一个.

我得到RejectedExecution在我的代码例外.我记得在某个地方读过AsyncTask一次可以在队列中拥有的任务数量有限,我可能会这样做.这个酒吧被解除了吗?

有没有办法增加这个限制?忽略这个异常是否安全?(通过一个空catch(RejectedException e){}块?)

我在Android 1.6模拟器上运行此代码,并在我的代码中运行API级别(minSDKVersion为3).[编辑:添加了SDK和API级别信息]

Com*_*are 17

我记得在某个地方读过AsyncTask一次可以在队列中拥有的任务数量有限,我可能会这样做.这个酒吧被解除了吗?

AsyncTask似乎目前支持10个线程,工作队列深度为10.理论上,这将只支持20个项目...如果没有其他用途AsyncTask.

有没有办法增加这个限制?

获取源代码,修改它,将其放入您自己的包中,然后使用它.我用我做了这个AsyncTaskEx,虽然这是基于Android 1.5源码.

忽略这个例外是否安全?

您的工作不会排队等待执行.这是否"安全"取决于您.我不知道对AsyncTask基础设施有任何其他影响.


Edw*_*alk 7

我自己在一个应用程序中完成了同样的事情.

一次启动20个并行线程从服务器下载缩略图并将它们推送到数据适配器对我来说听起来不是一个好主意.所有这些线程将只是相互绊倒并相互接触.

相反,我只会启动一个线程,让它在循环中收集缩略图,并在它们到达时将它们添加到适配器.