0

我有一个列表视图,单击时每个列表视图项目都会打开一个要下载的画廊(包含 30 多个图像)(使用 url)。我不想在下次访问时重新下载图像,也希望图像存在当我在离线模式下单击列表时。

我浏览了 SO 中的几个链接,对遵循哪种方法有点困惑:

  • 1> 使用 bytearray 并将图像存储在 sqlite db 中。
  • 2> 使用 context -> getExternalCacheDir() 将其存储在外部存储器上(这不适用于没有外部存储器的设备。)
  • 3> 按照以下链接中的建议使用 SoftReferences

http://android-developers.blogspot.in/2010/07/multithreading-for-performance.html

请帮助指导我处理大约 1000 多个图像的最佳方法,这些图像也可以在离线模式下工作。

4

1 回答 1

1

1000 张图片.....我当然希望它们是缩略图,否则您将最终使用大量存储空间。

你真的应该只缓存你需要的和重复使用的图像。选项 1 和 2 都取决于手机,即使有存储空间,如果没有空间,那么您将不会缓存太多到磁盘。3 不会永久存储图像,如果应用程序被置于后台并被杀死,缓存也将如此。

如果不了解应用程序的内部工作原理和要求,很难说这里的正确决定是什么。

只是按照你想要的,然后我会说有几个解决方案

如果有外部存储写入,如果不使用内部存储,如果内部空间不足,则使用软引用。

我一直发现开箱即用的缓存解决方案永远不会完全适合我的应用程序并最终编写我自己的缓存。对不起,我无法给出更好的答案。

PS。如果您对 3 不小心,您可能会下载太多并遇到 OutOfMemoryException。

聚苯乙烯。3 也可以抛出一个 RejectedExecutionException,这是由一次启动的异步任务过多引起的(例如,快速滚动通过通过异步任务获取图像的列表视图)

于 2012-09-24T20:21:59.300 回答