retrofit框架怎么实现一次请求先返回缓存数据,在返回网络数据? 400 请求出错 -问答-阿里云开发者社区-阿里云

开发者社区> 黄一刀> 正文

retrofit框架怎么实现一次请求先返回缓存数据,在返回网络数据? 400 请求出错 

2020-05-26 20:30:00 178 1

现在有一个需求,不管网络是否可用,先加载本地缓存,如果网络可用,同时请求网络数据,成功返回的话就展示最新数据。这样提高了用户体验,不至于网络差的情况页面一片空白。但是retrofit这个框架好像不能实现,它是通过添加拦截器实现自定义缓存,一次请求,要么返回缓存数据,要么返回网络数据,不能同时返回两者,代码如下:

**
 * 缓存策略
 */
private static final Interceptor cacheControlInterceptor = new Interceptor() {

    @Override
    public Response intercept(Chain chain) throws IOException {
        Request request = chain.request();
        if (!NetWorkUtils.isNetworkAvailable(GApp.getInstance())) {
            request = request.newBuilder().cacheControl(CacheControl.FORCE_CACHE).build();
            Log.i("ww", "no network");
        }
        Response response = chain.proceed(request);

        if (NetWorkUtils.isNetworkAvailable(GApp.getInstance())) {
            //   String cacheControl = request.cacheControl().toString();
            return response.newBuilder()
                    .header("Cache-Control", CACHE_CONTROL_NETWORK)
                    .removeHeader("Pragma")
                    .build();
        } else {
            return response.newBuilder()
                    .header("Cache-Control", "public, " + CACHE_CONTROL_CACHE)
                    .removeHeader("Pragma")
                    .build();
        }
    }
};
取消 提交回答
全部回答(1)
  • 黄二刀
    2020-05-27 10:10:05

    要么修改retrofit源码,要么自己去实现本地缓存

    0 0
相关问答

70

回答

Discuz实现oss云存储

山不周 2015-04-21 11:20:02 66100浏览量 回答数 70

11

回答

在阿里云上安装和运行Node.js全功略

ycwong 2013-09-18 15:17:30 64057浏览量 回答数 11

29

回答

云计算之路:为什么要选择云计算

cnblogs 2013-03-27 10:22:27 142708浏览量 回答数 29

19

回答

【分享】如何提高网站的打开速度?

enj0y 2012-11-17 14:35:22 56741浏览量 回答数 19

14

回答

价值888元的wordpress性能优化方案 全面提升wordpress打开速度

元芳啊 2018-11-01 10:54:31 52981浏览量 回答数 14

28

回答

钉钉开放平台“常见问题常见问题常见问题“重要请关注

竹梅 2015-12-03 00:39:14 92959浏览量 回答数 28

19

回答

【分享】如何提高网站的打开速度?

enj0y 2012-11-17 14:35:22 46943浏览量 回答数 19

53

回答

巧用linux云服务器下的的/dev/shm/,避开磁盘IO不给力!

qilu 2013-05-29 22:24:22 62851浏览量 回答数 53

13

回答

【云服务器分享】如何节省网站流量

dreamdoo 2012-10-15 10:36:09 80144浏览量 回答数 13

16

回答

Linux系统常用命令大全

2013-05-16 11:07:26 44027浏览量 回答数 16
+关注
黄一刀
Java菜鸟一只,基层法律工作者。
0
文章
1270
问答
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载