Retrofit+Rxjava设置缓存

首先说一下Retrofit是基于Okhttp做的所以咋们的Retrofit的缓存也是如此

 
 
long MAX = 10 * 1024 * 1024;//设置缓存最大内存
File file = new File(this.getExternalCacheDir(), "jingshi");//为缓存设置缓存//目录文件夹 和缓存文件夹名字
Cache cache = new Cache(file, MAX);//Cache是缓存对象
OkHttpClient.Builder builder = new OkHttpClient.Builder();
builder.cache(cache);
builder.addInterceptor(new Interceptor() {
    @Override
    public Response intercept(Chain chain) throws IOException {
        Request.Builder builder1 = chain.request().newBuilder();
        builder1.cacheControl(new CacheControl.Builder().maxStale(50 * 50 * 10, TimeUnit.SECONDS).build());
        Response proceed = chain.proceed(builder1.build());
        return proceed;
    }
});

 
 

 

 
 
OkHttpClient build2 = builder.build();//Okhttp对象build返回但前对象

Retrofit build1 = new Retrofit.Builder().client(build2).baseUrl(RxUrl.RXURLS).addCallAdapterFactory(RxJavaCallAdapterFactory.create())
        .addConverterFactory(GsonConverterFactory.create()).build();
RJiekou rJiekou = build1.create(RJiekou.class);
Observable<Bens> strig = rJiekou.getStrig();//Rxjava链式调用并把我们的Okhttp的拦截器和build的对象放进去

到这 我们的缓存就昨完了

猜你喜欢

转载自blog.csdn.net/qq_42046338/article/details/80764949