给数据接口添加缓存 rxjava和retrofit

数据接口本来没有缓存,那么要添加缓存就需要做两件事第一就是给客户端添加一个网络拦截器注意是网络拦截器哦,来设置缓存的时间.第二是创建一个缓存对象设置缓存的大小!

第一步 创建拦截器

 interceptor = new Interceptor() {
            @Override
            public Response intercept(Chain chain) throws IOException {
//网络请求对象
                Request request = chain.request();
//请求服务器响应对象
                Response response = chain.proceed(request);
//移除杂注的请求头 添加缓存控制策略
                Response pragma = response.newBuilder().removeHeader("Pragma").addHeader
                        ("Cache-Control", "max-age=3600").build();

                return pragma;
            }
        };

第二步 创建缓存对象 并构建client服务器对象

//        保存缓存文件的路径
        File cacheDir = getCacheDir();
//        构建缓存对象 路径和缓存的大小为10mb
        Cache cache = new Cache(cacheDir, 1024 * 1024 * 10);
//            构建客户端 添加拦截器和缓存
        OkHttpClient client=new OkHttpClient.Builder()
                .addNetworkInterceptor(interceptor)
                .cache(cache)
                .build();
//        把构建的客户端 添加到retrofit的构建里
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl("http://gank.io/")
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                .addConverterFactory(GsonConverterFactory.create())
                .client(client)
                .build();
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,138评论 1 32
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 11,141评论 6 13
  • 1.JVM 堆内存和非堆内存 堆和非堆内存按照官方的说法:“Java 虚拟机具有一个堆(Heap),堆是运行时数据...
    yanzhu728阅读 940评论 0 0
  • 又是一年中秋佳节,祝各位中秋节快乐。 今天我们来聊聊这个最近很火的网络请求库retrofit,在此基础上会延伸出一...
    涅槃1992阅读 7,834评论 13 133
  • 绿杨烟柳晓轻寒,细雨三月蝶翩翩; 只愿此生长伴君,君若惜我我若怜!
    宜修书屋阅读 252评论 2 4