Android Volley - 持久缓存特定项目

时间:2013-10-08 22:50:52

标签: java android android-volley

我正在玩Volley,当Volley去掉它的缓存时,我想要保留某些数据(JSON或图像),无论是在内存还是在DiskBasedCache中。目前我正在做的是如果一个项目在内部标记为持久化,我们将其保存到文件中,如果Volley失败,那么我们检查文件中的数据。

我目前正在做的是攻击DiskBasedCache并持有一个静态ArrayList的键,以便在调用pruneIfNeeded时不清除。有更推荐的方法吗?

1 个答案:

答案 0 :(得分:2)

我认为您的解决方案是一个很好的有效选择。你有另一种选择,它不那么“hacky”,但还有一点工作:

在您对Volley的调用之上创建一个“图层”,该图层具有自己的磁盘缓存和自己的内存缓存。让我们调用图层网络接口来达到此答案的目的。

遵循以下流程:

需要网络资产时:

  1. 检查网络层的mem-cache - 如果找到则返回。
  2. no-hit:检查网络层的磁盘缓存 - 如果找到则返回。
  3. 没有命中:向Volley转发请求。
  4. 当Volley返回结果时,如果资产是您想要永久保留的类型,请将其保留在磁盘和缓存中。
  5. 返回结果。
  6. 每个磁盘操作都应该是非阻塞的,并在后台线程上执行。与网络层的整体沟通应该与具有成功和错误监听器的Volley风格类似。