RxCache 分析与修改

本文主要分析了RxCache在App数据请求中的缓存处理,包括需求确认、改动点介绍。需求包括在请求时检查缓存数据是否需要迁移、是否过期,以及在网络请求成功或失败时如何处理。改动点集中在数据过期处理和数据迁移的bug修复。文章还提到了RxCache的GitHub链接和源码分析资源。
摘要由CSDN通过智能技术生成

确认需求

  1. 打开App,请求数据时先检查缓存数据是否需要迁移,如果有缓存数据升级,那么就删除原有的缓存数据。
  2. 如果有缓存数据,判断数据是否过期,如果过期则网络请求,如果没有过期,则返回缓存数据。
  3. 如果网络请求成功,返回数据,同时更新缓存信息
  4. 如果网络请求失败,返回缓存信息。
  5. 如果网络失败,缓存为空,则返回空数据或者抛出异常信息

改动点

  1. 每次读取数据之后都会处理过期数据,不满足要求4
  2. 先读缓存,再网络加载
/core/internal/cache/RetrieveRecord.java
  <T> Record<T> retrieveRecord(String providerKey, String dynamicKey, String dynamicKeyGroup,
      boolean useExpiredDataIfLoaderNotAvailable, Long lifeTime, boolean isEncrypted) {
    String composedKey = composeKey(providerKey, dynamicKey, dynamicKeyGroup);

    Record<T> record = memory.getIfPresent(composedKey);

    if (record != null) {
      record.setSource(Source.MEMORY);
    } else {
      try {
        record = persistence.retrieveRecord(composedKey, isEncrypted, encryptKey);
        record.setSource(Source.PERSISTENCE);
        memory.put(composedKey, record);
      } catch (Exception ignore) {
        return null;
      }
    }

    record.setLifeTime(lifeTime);

//    删除缓存过期的逻辑
//    if (hasRecordExpired.hasRecordExpired(record)) {
//      if (!dynamicKeyGroup.isEmpty()) {
//        ev
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值