Retrofit2+okhttp3项目中离线缓存,在线缓存详解

本文详细介绍Retrofit结合OkHttp实现缓存配置的方法,包括如何通过拦截器自定义缓存策略,支持在网络可用时获取最新数据,离线时读取缓存数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:

        前面写了关于get的一些基本使用方式。本来这里是打算说说post的。但是发现还得先说说缓存的配置。其实在之前就说过关于缓存的配置,而且的确是良心保证,自己的项目就是这么配置的,而且自己也写了接口测试了。是正确的,但是有的朋友还是说不行。这次我再来配置一次,更加清晰,更加详细。想要自己了解更多http://square.github.io/retrofit这个是retrofit的官网,自己可以去看看,同时也建议什么都还是去官网看看比较靠谱。然后其实我也很多看不懂,只能硬着头皮了没有人能帮助你。


我们先暂时了解几个事情:

        1.get请求是通过传递一些参数,获取服务器的数据。不会改变数据库的数 据,参数都在请求实体里面

        2.post是提交数据,讲一些数据发送到服务器,然后改变数据库的。

        3.我们的请求相关的有两个比较重要的概念,一个Request,一个是Response,request是请求,是你发送给服务器的东西。Response是服务器给你返回的东西。

所有一般缓存的话都是针对get,post你提交数据不需要缓存。


let us do it:

        明白了我们就来开始做吧。我们还是在之前的配置基础上来配置缓存。如果不知道配置的可以看上篇文章,或者百度,retrofit2+okhttp3的配置使用,一大堆。这里还给大家一个建议,要么就别看,反正都看了就不要急躁,慢慢的细细的看完看懂。


第一步:拦截器:

        拦截器就是我们类似路由器一样,所有的网络来去都得进过这里。我们的流程是这样的:

1.服务器给我们返回数据了我们通过拦截器拿到response。

1.修改response里面的一些信息。

2.retrofit会通过我们已经修改的信息选择缓存策略。   

第二步:两种缓存:

        1.在有网络的情况下直接获取网络上的数据,没有网络的情况下获取缓存的数据。

        2.无论有无网络我们都去获取缓存的数据(我们会设置一个缓存时间,在某一段时间内(例如60S)去获取缓存数据。超过60S我们就去网络重新请求数据)。

第一种缓存拦截器

有网络读取网络的数据,没有网络读取缓存。但是切记第一次肯定是要有网络的,没有缓存数据怎么读取对吧。


第二种缓存拦截器


然后设置okhttp就可以了。


然后就可以了然后下面是良心实验数据


说明:我们这是的无论有无网络都读取缓存。看as我们请求了4次,第前面2次卧是有网络的情况,后面2次是没有网络的情况访问的。无论怎么访问,服务器只被访问了一次。而客户端也没次都有数据。数据是同一个数据。完全符合我们说的第一种哦缓存

说明:客户端我第一次有网络访问,服务器被访问了。然后我段开网络,服务器没有被访问到。但是客户端有之前的缓存数据。


这里就是okhttp的缓存设置。然后有疑问的朋友可以给我留言。另外我们有时候可能需要在调取的地方设置,这个也简单,自己封装一个参数就好。传什么模式就什么模式。


原创文章希望大家帮帮推广下关注原创。同时也希望大家能多提点意见。谢谢大家了。点击图片应该可以关注。再次感谢大家了。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值