全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Retrofit + OkHttp缓存处理的示例代码

通过缓存处理可以有效降低服务器的负荷,加快APP界面加载速度,提升用户体验。Retrofit + OkHttp缓存处理流程是这样的,请求响应之后会在data/data/packageName/cache下建立一个response文件夹,保存缓存数据,后续请求时若无网络,则直接读取缓存内容,若有网络则从网络获取最新数据并缓存。

1.设置缓存路径,大小及添加缓存拦截器

//设置缓存路径
File httpCacheDirectory = new File(CommonApplication.getInstance().getCacheDir(), "responses");
//设置缓存 10M
Cache cache = new Cache(httpCacheDirectory, 10 * 1024 * 1024);
//创建OkHttpClient,并添加拦截器和缓存代码
OkHttpClient client = new OkHttpClient.Builder()
    .addNetworkInterceptor(new CacheInterceptor(CommonApplication.getInstance()))
    .cache(cache).build();

2.定义缓存拦截器。若网络正常,则缓存有效期1分钟;若网络异常,则缓存有效期6小时

public class CacheInterceptor implements Interceptor {
  private Context mContext;
  public CacheInterceptor(Context context) {
    mContext = context;
  }
  @Override
  public Response intercept(Chain chain) throws IOException {
    Request request = chain.request();
    if (NetworkUtils.isNetworkAvailable(mContext)) {//没网强制从缓存读取(必须得写,不然断网状态下,退出应用,或者等待一分钟后,就获取不到缓存)
      request = request.newBuilder()
          .cacheControl(CacheControl.FORCE_CACHE)
          .build();
    }
    Response response = chain.proceed(request);
    Response responseLatest;
    if (NetworkUtils.isNetworkAvailable(mContext)) {
      int maxAge = 60; //有网失效一分钟
      responseLatest = response.newBuilder()
          .removeHeader("Pragma")
          .removeHeader("Cache-Control")
          .header("Cache-Control", "public, max-age=" + maxAge)
          .build();
    } else {
      int maxStale = 60 * 60 * 6; // 没网失效6小时
      responseLatest = response.newBuilder()
          .removeHeader("Pragma")
          .removeHeader("Cache-Control")
          .header("Cache-Control", "public, only-if-cached, max-stale=" + maxStale)
          .build();
    }
    return responseLatest;
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# Retrofit  # OkHttp缓存  # Android中okhttp3.4.1+retrofit2.1.0实现离线缓存  # Android中的Retrofit+OkHttp+RxJava缓存架构使用  # 拦截器  # 是这样  # 会在  # 若有  # 建立一个  # 若无  # 大家多多  # 加载  # 断网  # 分钟后  # 状态下  # Cache  # responses  # getCacheDir  # getInstance  # CacheInterceptor  # addNetworkInterceptor  # build  # public  # OkHttpClient 


相关文章: 建站主机是否等同于虚拟主机?  建站之星手机一键生成:多端自适应+小程序开发快速建站指南  如何高效配置香港服务器实现快速建站?  制作网站哪家好,cc、.co、.cm哪个域名更适合做网站?  建站之星后台管理如何实现高效配置?  如何解决VPS建站LNMP环境配置常见问题?  深圳企业网站制作设计,在深圳如何网上全流程注册公司?  c# F# 的 MailboxProcessor 和 C# 的 Actor 模型  香港服务器建站指南:外贸独立站搭建与跨境电商配置流程  详解jQuery中基本的动画方法  常州企业网站制作公司,全国继续教育网怎么登录?  python的本地网站制作,如何创建本地站点?  成都网站制作公司哪家好,四川省职工服务网是做什么用?  如何在宝塔面板创建新站点?  c++怎么用jemalloc c++替换默认内存分配器【性能】  网站制作报价单模板图片,小松挖机官方网站报价?  免费制作小说封面的网站有哪些,怎么接网站批量的封面单?  香港服务器如何优化才能显著提升网站加载速度?  独立制作一个网站多少钱,建立网站需要花多少钱?  营销式网站制作方案,销售哪个网站招聘效果最好?  微信推文制作网站有哪些,怎么做微信推文,急?  网站制作公司广州有几家,广州尚艺美发学校网站是多少?  深圳网站制作的公司有哪些,dido官方网站?  建站之星在线客服如何快速接入解答?  免费网站制作模板下载,除了易企秀之外还有什么H5平台可以制作H5长页面,最好是免费的?  小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化  如何快速搭建高效香港服务器网站?  安云自助建站系统如何快速提升SEO排名?  如何通过WDCP绑定主域名及创建子域名站点?  如何选择高效稳定的ISP建站解决方案?  如何在IIS中新建站点并解决端口绑定冲突?  建站为何优先选择香港服务器?  如何安全更换建站之星模板并保留数据?  天河区网站制作公司,广州天河区如何办理身份证?需要什么资料有预约的网站吗?  ,sp开头的版面叫什么?  魔毅自助建站系统:模板定制与SEO优化一键生成指南  香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化  宝盒自助建站智能生成技巧:SEO优化与关键词设置指南  开封网站制作公司,网络用语开封是什么意思?  制作表格网站有哪些,线上表格怎么弄?  php条件判断怎么写_ifelse和switchcase的使用区别【对比】  ,石家庄四十八中学官网?  TestNG的testng.xml配置文件怎么写  北京网页设计制作网站有哪些,继续教育自动播放怎么设置?  视频网站制作教程,怎么样制作优酷网的小视频?  移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?  清单制作人网站有哪些,近日“兴风作浪的姑奶奶”引起很多人的关注这是什么事情?  教程网站设计制作软件,怎么创建自己的一个网站?  江苏网站制作公司有哪些,江苏书法考级官方网站?  武清网站制作公司,天津武清个人营业执照注销查询系统网站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。