这篇博客主要和大家说说okhttp的缓存。之前踩了好多坑,反正看了很多帖子做了很多试验,发现网上的很多都不怎么么正确,我的疑问也一直没有解决。今天这个这个是真实的自己写的接口实现过的。是真的正确的也解决了我们需要的2种缓存的需求
我先说说我们为啥要缓存。1.处理高并发的问题:当我们的用户量比较大的时候我们的服务器 有时候可能受不了所以我们要把那些并不是经常更新和不是很重要的信息缓存下来。我们只需要去请求那些主要的信息。还有就是有时候我们很无聊就是在app界面刷新刷新刷新,这样的话我们就可以不用把这个看成有效的请求。这时候我们就可以将缓存到本地的数据展示出来,这样的话我们就不用给服务器压力了。
2。这个就是我么没有网络的情况下要显示的缓存。我们有的需求就是我们没有网络的时候我们要展示我们上次显示的信息。这样的话我么就要用到我们的缓存了。
这里就说到了我们的两种缓存:
一、无论有无网络我们都去获取缓存的数据(我们会设置一个缓存时间,在某一段时间内(例如60S)去获取缓存数据。超过60S我们就去网络重新请求数据)
二、有网络的时候我们就去直接获取网络上面的数据。当没有网络的时候我们就去缓存获取数据。
现在说一下基本的知识把,为我们的后面讲的2种缓存打下最简单的基础。如果了解Retrofit,okhtt的朋友可以忽略这里的信息。
一、环境的搭建和集成
1.先集成okhttp和retrofit我就直接贴出来我的项目里面的了。
compile 'com.squareup.okhttp3:okhttp:3.4.1' compile 'com.squareup.retrofit2:retrofit:2.1.0' compile 'com.squareup.okio:okio:1.6.0' compile 'com.google.code.gson:gson:2.7' compile 'com.squareup.retrofit2:converter-gson:2.0.2'这样配置就可以了。
2.最简单的使用我就不说了。直接调用了。
OkHttpClient.Builder builder = new OkHttpClient.Builder();
OkHttpClient client = new OkHttpClient.Builder()
.retryOnConnectionFailure(true)//连接失败后是否重新连接
.connectTimeout(15, TimeUnit.SECONDS)//超时时间15S
.build();
Retrofit retrofit = new Retrofit
.Builder()
.baseUrl(AppConstants.RequestPath.HOST)
.client(client)//设置okhttp
.addConverterFactory(GsonConverterFactory.create(new Gson()))//解析数据
.build();
server = retrofit.create(ApiServer.class);
那么这里就是我们最简单的调用了有了server就很简单了啦。直接调用Api里面的自己编写的接口。
对于okhtt+retrofit不会使用的大家可以去看看帖子啊。这里就过多讲了啊。主要讲缓存策略的问题。
最低0.47元/天 解锁文章
两种缓存(离线和在线)&spm=1001.2101.3001.5002&articleId=52608485&d=1&t=3&u=f821dd85f05a42449d3e5e71a94c1d87)
961

被折叠的 条评论
为什么被折叠?



