mvp + rxjava2 + retrofit demo
https://github.com/wanglianghai/CacheHttpDemo/tree/master/app/src/main
//重新读取网络数据拦截器
Interceptor REWRITE_CACHE_CONTROL_INTERCEPTOR = new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
//请求:无网络强制使用缓存
Request request = chain.request();
if (!NetConnect.isNetWorkConnect(MyApp.sContext)) {
request.newBuilder()
.cacheControl(CacheControl.FORCE_CACHE)
.build();
}
//给自己应用看的头
Response response = chain.proceed(request);
if (NetConnect.isNetWorkConnect(MyApp.sContext)) {
return response.newBuilder()
.removeHeader("Pragma")
.header("Cache-Control", "public ,max-age=0")
.build();
} else {
int maxStale = 60 * 60 * 24 * 7;
return response.newBuilder()
.removeHeader("Pragma")
.header("Cache-Control", "public, only-if-cache, max-style=" + maxStale)
.build();
}
}
};
//设置缓存的大小和url
File httpCacheFile = new File(MyApp.sContext.getCacheDir(), "responses"); // cache url
int cacheSize = 50 * 1024 * 1024; // 50 MiB
Cache cache = new Cache(httpCacheFile, cacheSize);
OkHttpClient client = new OkHttpClient.Builder()
.addInterceptor(REWRITE_CACHE_CONTROL_INTERCEPTOR)
.cache(cache).build();
其他的看git的demo 讲一下主要的拦截器
看不的no内容:改造request请求(强制使用缓存)