1.OkHttpClient:
OkHttp框架的客户端,是一个用户面板;通过它对OkHttp进行各种设置,网络请求都是通过OkHttpClient完成的,每个OkHttpClient内部都维护了自己的任务队列、连接池、Cache、拦截器等
2.Call:
描述一个实际的访问请求,用户的每一个网络请求都是一个Call实例;实际实现是RealCall和AsyncCall
3.Dispatcher
任务调度器,维护了一个线程池,维护了三个双端队列,一个用于同步请求,两个用于异步请求
4.ExchangeCodec
协议层,分别支持HTTP1.1和HTTP2.0,对HTTP请求编码和响应解码
5.Exchange
传输单个HTTP请求和响应对,处理ExchangeCodec这个实际I/O
6.ExchangeFinder
Exchange辅助查找类
7.RealConnection
描述一个物理socket连接,连接池中维护多个RealConnection实例
8.RealConnectionPool
连接池,存储RealConnection连接
9.ConnectionPool
连接池,内部持有RealConnectionPool,通过它来及进行连接池的复用
10.StreamAllocation
由于Http/2支持多路复用,一个RealConnection可以支持多个网络访问请求,所以OkHttp又引入了StreamAllocation来描述一个实际的网络请求开销(从逻辑上一个Stream对应一个Call,但在实际网络请求过程中一个Call常常涉及到多次请求。如重定向,Authenticate等场景。所以准确地说,一个Stream对应一次请求,而一个Call对应一组有逻辑关联的Stream),一个RealConnection对应一个或多个StreamAllocation,所以StreamAllocation可以看做是RealConenction的计数器,当RealConnection的引用计数变为0,且长时间没有被其他请求重新占用就将被释放。
00261
11.Transmitter
发射器,更准确的说是用来通知和调度网络请求的,作用在整个网络请求生命周期;OkHttp的应用程序和网络层之间的桥梁。此类公开高级应用程序层:连接,请求,响应和流;也是用来计算RealConnection的连接引用,判定是否为空闲连接
12.RealInterceptorChain
拦截器链对象,操作整个链式,每一次调用一个拦截器
13.CookieJar
负责cookie的存取
最后献上一份添加了注释的源码 https://github.com/525642022/okhttpTest/blob/master/README.md
哈哈