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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • https://blog.csdn.net/joye123/article/details/82115562?ut...
    kkgo阅读 4,636评论 0 0
  • 介绍 OkHttp是一个用于Android和Java应用程序的HTTP客户端。相关参数和配置都是用Builder模...
    m1Ku阅读 1,471评论 0 1
  • 前言 用OkHttp很久了,也看了很多人写的源码分析,在这里结合自己的感悟,记录一下对OkHttp源码理解的几点心...
    Java小铺阅读 1,614评论 0 13
  • 医院的生活是前狼后虎的吗?想到些许令我羞愧的感动后,转而又想起了那些透心凉的场景。 就像没有人会在意一个活泼的灵魂...
    joannaooo阅读 223评论 0 0
  • 看到有人需要帮忙pdf转word,想起以前有经验,就加了好友。但是我特么转不来文字,没有电脑ocr识别软件或者序列...
    轻音94阅读 355评论 0 0

友情链接更多精彩内容