首先说一下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的对象放进去
到这 我们的缓存就昨完了