此篇介绍OkHttp的缓存功能,实现无网络情况下从缓存读取数据,类似很多新闻类的APP,在没有网络的情况下也是可以进入首页。除了新闻类,可能还有阅读类的app也需要缓存功能,等等。总之缓存在实际项目开发中使用得比较平凡,而如果要我们自己去写一套缓存逻辑,显然是很麻烦的。接下来,介绍OkHttp的缓存功能的使用。
强制读取缓存的测试过程:先成功请求一次,然后将网络断开,使用强制取缓存的方式,可以将缓存的结果请求到。
2、在一般情况下,不需要做额外的配置,OkHttp在没有网络的情况下,会自动请求缓存信息。但于此同时,网络请求失败会出现异常(已经捕获),通过异常可以做一些逻辑相关的处理。
- 配置缓存大小和缓存目录
- 强制请求网络(经过测试,此种方式还是会写入缓存,只是没有读取缓存内容)
- 强制读取缓存。也就是不管缓存是否有数据,都不请求网络。
强制读取缓存的测试过程:先成功请求一次,然后将网络断开,使用强制取缓存的方式,可以将缓存的结果请求到。
- 没有网络自动取缓存(默认方式) OkHttp设置了缓存大小和目录之后,默认的网络请求方式是如果没有网络或者网络连接失败,会返回缓存中的信息。
- OkHttp获取缓存信息的源码:(这是OkHttp中Cache类的源码中的一部分)
通过以上源码,可以看到有一个大家比较熟悉的类DiskLruCache,这就是一个磁盘缓存的工具类,OkHttp中使用的就是DiskLruCache进行的缓存。
- 总结
2、在一般情况下,不需要做额外的配置,OkHttp在没有网络的情况下,会自动请求缓存信息。但于此同时,网络请求失败会出现异常(已经捕获),通过异常可以做一些逻辑相关的处理。