0

我正在创建一个应用程序,它从服务器下载六个最近的图像(缩略图),然后在滑动(通过Viewpager)下载接下来的六个。在向后滑动时,它会显示前六个。存储它们的最佳做法是什么?我应该将它们保存在 sqlite 数据库中并在会话后删除还是应该将它们存储在堆中?目前我将它们存储在堆上,当下载 42 个缩略图时,它会破坏前六个。

4

1 回答 1

1

这取决于。这是堆内存和速度与持久性需求之间的权衡。

但是,如果您必须永久存储图像,请将它们作为单独的文件保存在应用程序的缓存目录(内部外部)而不是 SQLite 数据库中。SQLite 最适合存储结构化数据而不是二进制 blob。如果您有关联的元数据,您可以将文件的路径与元数据一起存储在 SQLite 中。

当设备存储空间不足时,缓存中的文件将被自动删除。但是请阅读文档以获取警告。

如果您选择在堆中缓存,请考虑使用LruCache. 它在API 级别 < 11的支持库中可用。

当然,最好的选择是让一个小的内存缓存由一个更大的文件缓存来备份。

于 2013-01-06T12:26:27.057 回答