导读
现在的 Android 开发中,可用的网络框架多种多样:volley
、okhttp
和 retrofit
等等。现在越来越多的团队的网络框架大部分是用的 okhttp
或者 retrofit
。所以基于这种现状,笔者在网络框架的源码接下中会对 okhttp
和 retrofit
的源码进行分析。
首先我们来看到 okhttp
为何如此受欢迎:
- 支持 HTTP1.0、HTTP1.1、SDPY 和 HTTP2.0 等协议
- 缓存响应数据来减少重复的网络请求
- 可以从很多常用的连接问题中自动恢复
- 使用起来非常简单
在 okhttp
的源码解析系列文章中,笔者将会分为 3 篇文章来对 okhttp
的源码进行解析。这3篇源码解析的文章,解决的问题有:
okhttp
同步和异步请求的区别以及它们的执行流程解析。okhttp
的Dispatcher
,分别对同步和异步请求的调度过程做一个解析。okhttp
的拦截器链,笔者将会对框架内部的5个拦截器进行源码分析,首先从整体上分析它们是如何形成一条链的,而后再对这5个拦截器的功能从源码的角度进行一一解析,了解它们之间是如何进行配合的。
在学习这三篇文章之前,你需要做好以下准备:
- 学会
okhttp
的基本使用方法,懂得基本的同步和异步请求是如何使用的,本系列文章重点在源码讲解,对于使用部分只会简单涉及,并不会过多介绍。 - 知晓
Builder
模式的基本设计理念以及它的基本使用方法,因为okhttp
用到了大量的Builder
模式进行对象的构造。 - 本系列的源码基于 okhttp 3.10.0,目前的最新版本是 okhttp 3.12.1,版本之间的变化一般都很小,所以用哪个版本的都可以。需要说明一点是希望大家看的时候能一边看源码一边看博客,这样子效果更好,只看博客的话会比较的费劲。
附上 okhttp
的 github
地址以及 okhttp
源码解析系列博客的超链接:
okhttp 的 github地址
okhttp源码解析(一):同步异步请求的执行流程分析、区别以及 Dispatcher 调度器的调度分析
okhttp源码解析(二):okhttp拦截器链的整体分析,以及对前三个内置拦截器的源码分析
okhttp源码解析(三):okhttp拦截器链后两个拦截器的源码分析
空格空格空格
接下来我们来说说 retrofit
,严格意义上来说 retrofit
并不算一个框架,它其实是对网络框架的一个封装,它的内部是使用 okhttp
来实现的。retrofit
的最大特点就是它使用了注解的方式,内部通过反射机制来处理网络请求的访问,所以在学习 retrofit 源码的时候,你需要做好准备:
- 知晓 Java 的注解,对注解的概念以及自定义注解等有一定的了解。
- 了解 Java 的反射机制,知道在 Java 中是如何通过反射机制来获取注解信息的。
- 了解
okhttp
的执行流程,最好在分析过okhttp
的源码之后再来进行retrofit
的学习效果更佳。
最后附上 retrofit
的 github
地址以及 retrofit
源码解析系列博客的超链接:
retrofit 的 github地址
retrofit源码解析:年后更新…