热门标签 | HotTags
当前位置:  开发笔记 > Android > 正文

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

这篇文章主要介绍了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网络缓存的资料请关注其它相关文章!


推荐阅读
  • 在项目部署后,Node.js 进程可能会遇到不可预见的错误并崩溃。为了及时通知开发人员进行问题排查,我们可以利用 nodemailer 插件来发送邮件提醒。本文将详细介绍如何配置和使用 nodemailer 实现这一功能。 ... [详细]
  • C#设计模式学习笔记:观察者模式解析
    本文将探讨观察者模式的基本概念、应用场景及其在C#中的实现方法。通过借鉴《Head First Design Patterns》和维基百科等资源,详细介绍该模式的工作原理,并提供具体代码示例。 ... [详细]
  • 嵌入式开发环境搭建与文件传输指南
    本文详细介绍了如何为嵌入式应用开发搭建必要的软硬件环境,并提供了通过串口和网线两种方式将文件传输到开发板的具体步骤。适合Linux开发初学者参考。 ... [详细]
  • 本文探讨了如何在iOS开发环境中,特别是在Xcode 6.1中,设置和应用自定义文本样式。我们将详细介绍实现方法,并提供一些实用的技巧。 ... [详细]
  • 本文将探讨Java编程语言中对象和类的核心概念,帮助读者更好地理解和应用面向对象编程的思想。通过实际例子和代码演示,我们将揭示如何在Java中定义、创建和使用对象。 ... [详细]
  • Windows 7 64位系统下Redis的安装与PHP Redis扩展配置
    本文详细介绍了在Windows 7 64位操作系统中安装Redis以及配置PHP Redis扩展的方法,包括下载、安装和基本使用步骤。适合对Redis和PHP集成感兴趣的开发人员参考。 ... [详细]
  • 本教程详细介绍了如何使用 TensorFlow 2.0 构建和训练多层感知机(MLP)网络,涵盖回归和分类任务。通过具体示例和代码实现,帮助初学者快速掌握 TensorFlow 的核心概念和操作。 ... [详细]
  • 本文详细介绍如何使用CSS自定义HTML5视频播放器的样式,涵盖常见属性及跨浏览器兼容性问题。发布时间:2020-09-14 14:46:29;来源:亿速云;阅读量:58;作者:小新。 ... [详细]
  • Coursera ML 机器学习
    2019独角兽企业重金招聘Python工程师标准线性回归算法计算过程CostFunction梯度下降算法多变量回归![选择特征](https:static.oschina.n ... [详细]
  • 本文深入分析了 USDC 的稳定性和可能的救援措施,探讨了在硅谷银行破产后 USDC 面临的风险以及行业内的反应。 ... [详细]
  • 基于Node.js、Express、MongoDB和Socket.io的实时聊天应用开发
    本文详细介绍了使用Node.js、Express、MongoDB和Socket.io构建的实时聊天应用程序。涵盖项目结构、技术栈选择及关键依赖项的配置。 ... [详细]
  • 深入解析Java枚举及其高级特性
    本文详细介绍了Java枚举的概念、语法、使用规则和应用场景,并探讨了其在实际编程中的高级应用。所有相关内容已收录于GitHub仓库[JavaLearningmanual](https://github.com/Ziphtracks/JavaLearningmanual),欢迎Star并持续关注。 ... [详细]
  • 本题来自WC2014,题目编号为BZOJ3435、洛谷P3920和UOJ55。该问题描述了一棵不断生长的带权树及其节点上小精灵之间的友谊关系,要求实时计算每次新增节点后树上所有可能的朋友对数。 ... [详细]
  • Nature Microbiology: 人类肠道古菌基因组目录
    本研究揭示了人类肠道微生物群落中古细菌的多样性,分析了来自24个国家、农村和城市人群的1,167个非冗余古细菌基因组。研究鉴定了多个新分类群,并探讨了古菌对宿主的适应性及其与社会人口特征的关系。 ... [详细]
  • 简化报表生成:EasyReport工具的全面解析
    本文详细介绍了EasyReport,一个易于使用的开源Web报表工具。该工具支持Hadoop、HBase及多种关系型数据库,能够将SQL查询结果转换为HTML表格,并提供Excel导出、图表显示和表头冻结等功能。 ... [详细]
author-avatar
吾车吾家
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有