OkHttp使用简介:缓存
①、准备OkHttpClient对象:网络
通常app中使用网络能够所有用它,能够将它弄为全局变量,这样就能够共用它的缓存和线程池了。app
②、准备Request对象:异步
很显然它是采用Builder模式来构形成,它封装了请求地址、请求方法、请求头、请求体和标志位信息:ui
③、发起请求:分为同步请求和异步请求:
同步请求:会阻塞UI线程。spa
异步请求:也就是不会阻塞UI线程,在子线程中执行的。线程
总结:3d
OkHttp源码剖析:对象
在分析源码以前先来看一张图:blog
程序会发一个Request请求给OkHttp的核心层进行处理,而在Okhttp中有一个最重要的概念:拦截器,它会将请求拦截以后再分发response给应用层,大致是这么一个过程。下面先来分析一下同步请求:
因为前两步比较简单,直接分析第三步:
先看一下newCall方法是作了啥事:
其实是生成了一个RealCall对象,因此最终execute()方法的执行就是在RealCall里面,定位到它:
下面分析一下它的实现:
下面具体来看一下:
这里以CallServerInterceptor拦截器为例进行分析:
因此说它的底层其实也就是用基础的东东来进行封装滴。
接下来再来看一下它的异步请求:
因此进去看一下:
这个类中有三个重要的集合:
下面用图来表示一下其整个过程: