2013-10-08 38 views
0

我在玩Volley,当Volley去清空它的缓存时,我想持久存储某些数据片段(JSON或图像),无论是在内存还是在DiskBasedCache 。目前我正在做的是如果一个项目被内部标记为持久,我们将它保存到一个文件中,如果Volley失败,那么我们检查文件中的数据。Android Volley - 持久缓存特定项目

我目前正在做的事是骇客DiskBasedCache和持有一个静态ArrayList的键不清楚何时调用pruneIfNeeded。有没有更好的方法来做到这一点?

回答

2

我认为你的解决方案是一个很好的选择。你有另一个选项是少一点“哈克”,但多一点工作:

在你的调用上面创建一个“层”,它具有自己的磁盘缓存和自己的内存缓存。为了这个答案的目的,让我们调用层网络接口

按照此流程:

当需要的网络资产:

  1. 检查网络层的MEM缓存 - 返回如果找到。
  2. no-hit:检查网络层的磁盘缓存 - 如果找到则返回。
  3. 没命中:转发请求到Volley。
  4. 当Volley返回结果时,如果资产是您想要永久保存的种类,请将其保留在磁盘和缓存中。
  5. 返回结果。

每个磁盘操作都应该是非阻塞的,并在后台线程上执行。整个与网络层的交流应该类似于成功和错误听众的排球风格。