OkHttp 3,下血本买的

本文深入探讨了OkHttp 3的设计和实现,包括OkHttpClient的配置与管理,Dispatcher的异步请求调度,Call接口的同步与异步任务,Interceptor调用链的角色,以及Transmitter在Call任务中的作用。通过对OkHttp各层次的解析,帮助读者理解如何实现一个HttpClient。
摘要由CSDN通过智能技术生成

对于OkHttp整体框架的介绍,网上的文章有很多,同时也配有一些图解(当然很多都是一样的就是了),总体上我和大家的理解也是相近的。但是呢,我觉得还不够具体也不够完善,因为我想知道,如果我自己要实现一个HttpClient到底要做到什么程度?所以我希望能更加详细地去理解OKHttp的设计和实现。

下面这幅是我自己描绘的OkHttp框架层次图(图比较大可能需要鼠标左键图片才能看清楚):

下面先来简单介绍一下OkHttp的各个层次,后面会有更加详细的文章专门去解读它们。

OkHttpClient

OkHttpClient在一个应用往往只会创建一个单例。

对外主要是两个功能:一个是可配置,比如你可以设置超时时间,配置自定义的CookieJar实现,配置多个自定义的Interceptor实现,添加事件监听等等;另外一个是提供newCall API,我们用的最多也是这个API。

对内它的配置会被全局范围内使用,同时也负责创建和管理一些全局单例对象,比如Dispatcher、ConnectionPool等。

所以OkHttpClient有点类似一个全局的应用上下文。

Dispatcher

Dispatcher主要管理异步请求任务策略,负责分配异步线程资源,控制异步连接数,只覆盖线程资源层面的逻辑,往下的执行过程对其来说是透明的。

而对于同步任务,Dispatcher只是简单

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值