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

开发者社区> wuvae> 正文

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

2018-06-19 14:46:08 2174 2

现在有一个需求,不管网络是否可用,先加载本地缓存,如果网络可用,同时请求网络数据,成功返回的话就展示最新数据。这样提高了用户体验,不至于网络差的情况页面一片空白。但是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();
        }
    }
};
取消 提交回答
全部回答(2)
  • 游客oxmybsvrqzml6
    2019-07-17 22:45:28

    首先你说的想直接返回两个是不可能的,可以自己改源码呗

    0 0
  • asdasdasd222
    2019-07-17 22:45:28

    换框架吧

    0 0
添加回答
相关问答

70

回答

Discuz实现oss云存储

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

11

回答

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

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

29

回答

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

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

19

回答

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

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

14

回答

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

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

28

回答

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

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

53

回答

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

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

23

回答

【云服务器分享】网站访问速度快才是硬道理

dreamdoo 2012-10-15 10:15:02 85197浏览量 回答数 23

13

回答

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

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

49

回答

0M带宽包年包月ECS支持带宽升级

qilu 2014-07-15 14:40:04 51940浏览量 回答数 49
+关注
0
文章
1
问答
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载