okhttp源码学习(三)基础类的介绍

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
哈哈

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章