Retrofit和OkHttp如何实现Android网络缓存

 更新时间:2021年02月18日 10:40:56   作者:OpenGL  
这篇文章主要介绍了Retrofit和OkHttp如何实现Android网络缓存,帮助大家更好的理解和学习Android开发,感兴趣的朋友可以了解下

前提:

没做过网络缓存这方面的功能,所以想学习下。上网看了很多的文章,也看了部分视频。想把自己的一些小小的心德分享一下。如何能够稍微帮助到别人,那对我来说就算是有意义了。废话不多说了。进入正题。

1.网路请求

网络请求用的是Retrofit。用过的人,都知道优点。没用过的人就照着图示或者Demo去写就好了,而且网上的文章一大堆,本人就不赘述了。

网络请求的写法

2.添加缓存

重点来了,在网上看了许多的缓存方法。到最后还是选择了,OkHttp添加拦截器的这种方法。貌似用这种方法的人最多。

先来两张图,在做解释。

这里设置了读写连接的超时时间。还设置了cookie的持久化。CookieJar有两个回调接口。用一个HashMap来保存cookie,在saveFromResponse中保存。在需要的时候在loadForRequest中取出。这样就能每次请求中都携带Cookie了。

这里就是本文的重点如何缓存了。

1.先获取一个File实例,这个文件夹是专门用来保存缓存文件的。

2.实例化一个Cache对象,他的第一个参数就是之前的File实例,第二个是文件夹的最大缓存大小。

3.添加拦截器,Okhttp的拦截器是一个很好的东西。无论是统一添加header,还是通过HttpLoggingInterceptor将传输的数据通过log形势答应出来,包括添加缓存都需要用到它。首先我们要确定一个思维,就是缓存的策略。在有网络的时候,我们成功获取数据,同时将他缓存到本地。当无网络的时候,从本地取出我们之前缓存好的数据,进行加载。这样就完成了数据的缓存。缓存的代码可以当做固定代码。网上也有很多讲CacheControl的缓存策略的。这里也不赘述了。

3.注意事项

权限问题,尤其是6.0以上需要动态申请。在授予权限的时候需要注意。

另外,OkHttp的缓存只能用于Get请求。OkHttp的Cache类中,对于GET以外的请求,都返回null。源码中也做出了解释:不允许Get以外的请求,从技术上是允许post请求的。但是他的复杂度很高,实用性太低。

结束语:

最后外加一个Demo的地址:

https://github.com/13046434521/CacheDemo

具体的代码有什么不清楚的可以去这里查看。感谢各位亲。至此,感谢!如果喜欢的话可以点波关注!风里雨里在这里等你。哈哈,感谢!

以上就是Retrofit和OkHttp如何实现Android网络缓存的详细内容,更多关于Retrofit和OkHttp实现Android网络缓存的资料请关注脚本之家其它相关文章!

相关文章

  • android USB如何修改VID具体实现

    android USB如何修改VID具体实现

    在android 设备的Linux 内核中把 USB 驱动的 PID VID 修改以后,也许之前的adb工具就不能识别设备了,会打印出"device not found"的提示
    2013-06-06
  • Android编程ViewPager回弹效果实例分析

    Android编程ViewPager回弹效果实例分析

    这篇文章主要介绍了Android编程ViewPager回弹效果,以实例形式较为详细的分析了ViewPager回弹效果的相关使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-10-10
  • Android实现机房座位预约系统

    Android实现机房座位预约系统

    这篇文章主要为大家详细介绍了Android实现机房座位预约系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04
  • Android布局控件DrawerLayout实现完美侧滑效果

    Android布局控件DrawerLayout实现完美侧滑效果

    这篇文章主要为大家详细介绍了Android布局控件DrawerLayout实现完美侧滑效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • Android跳转三方应用实例代码

    Android跳转三方应用实例代码

    大家好,本篇文章主要讲的是Android跳转三方应用实例代码,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • Flutter 实现酷炫的3D效果示例代码

    Flutter 实现酷炫的3D效果示例代码

    这篇文章主要介绍了Flutter 实现酷炫的3D效果,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • Android点击Button实现功能的几种方法总结

    Android点击Button实现功能的几种方法总结

    当Button有多个或者Button的使用次数很多时,我们需要采用绑定监听器的做法,其实,绑定监听器也有几种方法,不过,我在这里就不一一列举了,毕竟那些方法在实际的应用中也不常见
    2013-10-10
  • Android基于TextView属性android:ellipsize实现跑马灯效果的方法

    Android基于TextView属性android:ellipsize实现跑马灯效果的方法

    这篇文章主要介绍了Android基于TextView属性android:ellipsize实现跑马灯效果的方法,涉及Android跑马灯效果所涉及的TextView相关属性与使用方法,需要的朋友可以参考下
    2016-08-08
  • Android写一个实时输入框功能

    Android写一个实时输入框功能

    这篇文章主要介绍了Android写一个实时输入框功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-04-04
  • Android判断网络状态的代码

    Android判断网络状态的代码

    这篇文章主要为大家详细介绍了Android判断网络状态的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10

最新评论