存储临时图像的最佳实践

时间:2013-01-06 11:08:15

标签: android sqlite

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

1 个答案:

答案 0 :(得分:1)

这取决于。这是堆存储器和存储器之间的权衡。速度和持久性的需要。

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

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

如果您选择在堆中缓存,请考虑使用LruCache。它在support library中可用于API级别< 11。

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