java - Android Volley - 保留特定项目的缓存

标签 java android android-volley

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

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

最佳答案

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

在对 Volley 的调用之上创建一个“层”,该层具有自己的磁盘缓存和内存缓存。为了这个答案,我们将层称为网络接口(interface)

遵循此流程:

当需要网络 Assets 时:

  1. 检查网络层的内存缓存 - 如果找到则返回。
  2. no-hit:检查网络层的磁盘缓存 - 如果找到则返回。
  3. 无命中:将请求转发给 Volley。
  4. 当 Volley 返回结果时,如果 Assets 是您希望始终保留的类型,请将其保留在磁盘和缓存中。
  5. 返回结果。

每个磁盘操作都应该是非阻塞的并且在后台线程上执行。与网络层的整个通信应该类似于带有成功和错误监听器的 Volley 风格。

关于java - Android Volley - 保留特定项目的缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19259924/

相关文章:

java - Java 中的 ArrayList 与 Python 中的列表

android - ImageView 未显示 PDFRenderer 在 Android API 29 上创建的位图中的图像

android - BitmapFactory.decodeFile() 不适用于 Adob​​eImageIntent.EXTRA_OUTPUT_URI

java - Android 中线程如何与监听器交互?

java - Gson/Volley Android 从响应中获取消息而不是数据

java - 如何使用 WordNet 或与 wordnet 相关的实现基于类别的文本标记?

java - 如果发生异常则退出 Java Callable

java - ETL设计: What Queue should I use instead of my SQL table and still be able to process in parallel?

android - Android list 中的多个应用程序名称

android - 使用 volley android 下载 Zip 文件