有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Android截取特定项目的持久缓存

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

我目前正在做的是对DiskBasedCache进行黑客攻击,并在调用pruneIfNeeded时保留一个静态的键数组列表,以便不清除这些键。有没有更推荐的方法


共 (1) 个答案

  1. # 1 楼答案

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

    在对Volley的调用上方创建一个“层”,该层具有自己的磁盘缓存和内存缓存。为了回答这个问题,让我们调用层网络接口

    遵循以下流程:

    当需要网络资产时:

    1. 检查网络层的mem缓存-如果找到,返回
    2. 无命中:检查网络层的磁盘缓存-如果找到,返回
    3. 无命中:向前请求截击
    4. 当Volley返回结果时,如果资产是您希望始终持久化的类型,请将其持久化到磁盘和缓存中
    5. 返回结果

    每个磁盘操作都应该是非阻塞的,并在后台线程上执行。与网络层的整个通信应类似于截击式,有成功和错误的侦听器