Retrofit缓存
来源:互联网 发布:mac不能同时登陆2个qq 编辑:程序博客网 时间:2024/05/24 03:21
public static OkHttpClient genericClient() { if (client != null) { return client; } //缓存路径 File cacheFile = new File(App.getContext().getCacheDir(), "HttpCache"); Cache cache = new Cache(cacheFile, 1024 * 1024 * 10);//缓存文件为10MB Interceptor interceptor = new Interceptor() { @Override public okhttp3.Response intercept(Chain chain) throws IOException { int maxAge = 60 * 60; // 有网络时 设置缓存超时时间1个小时 int maxStale = 60 * 60 * 24 * 28; // 无网络时,设置超时为4周 Request request = chain.request(); if (isNetworkReachable(App.getContext())) { request = request.newBuilder() .cacheControl(CacheControl.FORCE_NETWORK)//有网络时只从网络获取 .build(); } else { request = request.newBuilder() .cacheControl(CacheControl.FORCE_CACHE)//无网络时只从缓存中读取 .build(); } okhttp3.Response response = chain.proceed(request); if (isNetworkReachable(App.getContext())) { response = response.newBuilder() .removeHeader("Pragma") .header("Cache-Control", "public, max-age=" + maxAge) .build(); } else { response = response.newBuilder() .removeHeader("Pragma") .header("Cache-Control", "public, only-if-cached, max-stale=" + maxStale) .build(); } return response; } }; client = new OkHttpClient.Builder() .addNetworkInterceptor(interceptor) .connectTimeout(10 * 1000, TimeUnit.SECONDS) .cache(cache) .build(); return client; }
网络判断 需添加权限
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
public static Boolean isNetworkReachable(Context context) { ConnectivityManager cm = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo current = cm.getActiveNetworkInfo(); if (current == null) { return false; } return (current.isAvailable()); }
Get请求可将其缓存,JSONConverterFactory是自定义的转换
Retrofit.Builder builder = new Retrofit.Builder() .client(genericClient()) .baseUrl(baseUrl) .addConverterFactory(new JSONConverterFactory());
0 0
- retrofit缓存
- Retrofit缓存
- Retrofit+okhttp 缓存的
- retrofit+okhttp 实现缓存
- Retrofit集成网络缓存
- 为Retrofit 2.0 添加缓存
- Android Retrofit RxJava实现缓存
- Android网络缓存,retrofit+okhttp
- Cache-Control与retrofit缓存
- 【缓存策略】Retrofit+OkHttp实现缓存处理
- Retrofit缓存数据遇到的问题
- Retrofit缓存设置,处理UnKnownHostException异常信息
- Retrofit—okhttp Cache缓存策略
- Retrofit网络请求+GreenDao数据缓存
- 【Android】Retrofit框架缓存处理(离线缓存等)
- Retrofit+rxjava的缓存设置,以及glide的缓存设置
- Retrofit
- Retrofit
- 2017年要学习的三个CSS新特性
- “extern ”和 “static ” 遇上了,就提一點!
- MySql表结构修改详解
- XCAT的安装与简单使用
- C++中的对象模型
- Retrofit缓存
- Linux cp -a用法
- DBA常用的MySQL语句
- 百度地图:定位,轨迹,白板,加载崩溃,定位到非洲
- 各个浏览器开启CSS Grid Layout的方式
- AndroidStudio插件GsonFormat快速实现JavaBean
- Android短信发送流程之多收件人发送(原)
- ActivityOptions过场动画
- Objective-c 中#import 和 @class 的区别