数据接口本来没有缓存,那么要添加缓存就需要做两件事第一就是给客户端添加一个网络拦截器注意是网络拦截器哦,来设置缓存的时间.第二是创建一个缓存对象设置缓存的大小!
第一步 创建拦截器
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();
网友评论