在大型ListView图像上缓存Drawables

时间:2011-09-24 03:57:22

标签: android database listview

如果我有一个包含大量图像的ListView,我显然不能一次将所有图像存储在内存中(太大)。当您在列表中移动时,这些图像会从互联网上下载,因此如果图像离开屏幕则从内存中删除图像并在向后滚动时重新下载是愚蠢的大声笑。

平均图像尺寸约为40kb,约为500×500

我应该:

1)当图像在屏幕外时,压缩&解码图像并将其作为byte []存储在数据库中,然后当用户滚动回项目时,它会在UI线程中的图像上显示“加载”符号,同时在后台解码图像(以便不要滞后滚动),并在退出时或当它比100张图像大时清除这个数据库。我假设解码图像的速度相对较快(不到一秒)

2)将此图像保存在文件系统上,并将其保存在数据库中,并在用户滚动到某个项目时获取图像,并在退出时或文件系统满时从数据库和文件系统中删除该图像(似乎喜欢它会占用更多的电话空间而不是选项1)。将数据库和文件系统保持在“同步”状态似乎更难,也更烦人。

3)你的建议= D

感谢您的帮助:)

1 个答案:

答案 0 :(得分:0)

我强烈建议使用WebImageView,它是Droidfu库的一部分。它处理异步下载图像(使用占位符动画时),然后智能地为您缓存图像,这样您就不必担心存储图像了。

http://brainflush.wordpress.com/2009/11/23/droid-fu-part-2-webimageview-and-webgalleryadapter/