2013-01-01 66 views
0

我有兴趣缓存大量图像。它们正在Horizo​​ntalScrollView中显示。每张图片都与一个网址相关联。在2.2设备上,你无法启动许多AsyncTask作为图像,因为在说了10个AsyncTask之后,它会使应用程序相信我。所以我正在考虑启动一个AsyncTask,它将通过每个url进行处理,获取位图并将其存储在缓存中。由于某些图片可能比其他图片需要更长的时间,因此我认为启动AsyncTasks以获取图片并将其放入Cache的AsyncTask就是要走的路。等待每个人返回都是不可行的,因为有些人可能比其他人需要更长的时间。所以我认为一个AsyncTask和doInBackground是一个慢延迟循环,每个启动一个。这种方法可用于图像缓存位图吗?AsyncTask可以启动另一个AsyncTask吗?

+1

你见过坠机的原因吗?不是因为你运行_say_ 10'AsyncTask's,是因为你加载了一堆'Bitmap'并且内存不足......缓存它们只会让它变得更糟 –

+1

你应该做的事情是把呼叫放在'onPostExecute',因为它已经完成了,并且你不会有大量的线程同时运行 – Jeeter

+0

不,对并发AsyncTasks的数量有限制。错误不是内存,而是线程相关的。 – user1847544

回答

1

从文档:

的的AsyncTask类必须在UI线程加载。从JELLY_BEAN开始自动完成 。

此外,由于honecomb AsyncTasks是序列化的(默认情况下),所以也不宜使用AsyncTasks和并行进行长时间处理。如果这是你需要看看执行者。在AsyncTask文档页面中找到适当文档的链接。

相关问题