我正在构建一个“图库”应用程序,可以从一个站点获取大约50 - 60个高清图像。该网站将每周更新图像列表三次,因此下次启动应用程序时,必须提取新图像并丢弃旧图像。
缓存这些图像的最佳方法是什么,并且在不运行的情况下延迟加载它们 进入OutOfMemory和SoftReference问题?需要延迟加载,因为每个图像缩略图都有一个标题并冻结缩略图UI,直到图像加载不是一个好主意。
另外,对于延迟加载图像 - 为每个缩略图生成一个线程并实现一个队列来处理线程真的是一个很好的设计吗?有更简单的方法吗?
请帮忙!
感谢阅读!
答案 0 :(得分:0)
由于问题很普遍,我的帮助也是如此。一些想法: - 在一个单独的线程中加载图像 - 将它们存储为SD卡上带有名称的文件,或者......每次运行应用程序时下载它们! - 将它们放在GridView中。您可以使用消息处理程序(从线程到主UI线程的消息)来更新GridView - 如果您决定将图像存储在手机上,请通过文件名识别它们,或将这些名称存储在本地数据库中。
实际上我已经实现了一个GridView用于读取SD卡上的图像,并且延迟加载图像列表,而不是你想要做的,但它绝对可行,你可以在网上找到一些代码。
答案 1 :(得分:0)
您可以在Zwitscher来源的PicHelper获得一个战略,用于在本地文件系统上进行提取和存储的类,以及再次从这些文件中读取位图。
在主代码中,您将启动AsyncTask
来获取图像(在其doInBackground()
方法中。为了防止OOME我将图像列表提取到“队列”并获取它们是串行的,而不是并行的。许多手机只有48MB或更少的堆。