在Android上缓存图像几天

时间:2016-10-13 13:46:48

标签: android caching bitmap

我需要缓存图像让我们说14天。在某些Web服务上,我会使用ExpiresActive OnExpiresDefault "access plus 14 days"设置apache来执行此操作。

有可能用android做到这一点吗?当然,我可以将图像存储在手机存储设备上,但这不是我正在寻找的解决方案。

我读了这个article (Caching Bitmaps) - 但是使用LruCache然后调用finish()会破坏缓存,我是对的还是我缺少的东西?

除了将文件保存到手机的存储空间外,还有其他解决方案吗?

2 个答案:

答案 0 :(得分:1)

您拥有的一个选项是使用UniversalImageLoader。有了这个,你不必重新发明轮子。您可以通过以下方式缓存图像:

DisplayImageOptions options = new DisplayImageOptions.Builder().cacheInMemory(true).cache.build();
ImageLoader.getInstance().displayImage(url, iv, options,
                new SimpleImageLoadingListener() {
...
}

还有其他选项,例如cacheOnDisk(true)。如果您需要特定天数的缓存机制,这可能不是您问题的最终解决方案。

修改

另一个好的选择是使用Sync Adapter。不幸的是,这是一个相当长的话题,所以请按照我提供的链接。要使用它,您可能必须为您的应用创建ContentProvider,然后创建一个实现AbstractThreadedSyncAdapter的类。

答案 1 :(得分:0)

所以最后我使用SharedPreferencesFile

解决了这个问题

工作原理

我有一些带有base64图像字符串的json。我需要将这些值存储7天。所以我将json写入文件,保存,将日期字符串(创建日期)写入SharedPreferences。

  1. 用户打开活动
  2. 从SP
  3. 获取日期
  4. 检查日期是否已过期
  5. 已过期 - 从http请求中获取新的json
  6. !已过期 - 检查json文件是否存在
  7. 存在 - 从文件
  8. 加载json
  9. !存在 - 从http请求获取新的json并保存到文件,更新创建日期
  10. 我不确定这是否是正确的解决方案,但它对我有用。