08
1-2018
Mirs_sir
博客:http://my.csdn.net/a109340
声明:本文由作者 Mirs_sir 授权发布,未经原作者允许请勿转载
看到上面蓝色字了吗,点下吧
感谢 Mirs_sir 为我们带来OkHttp源码分析系列文章,目录如下:
1.Http请求原理
2.OkHttp的简单使用
3.OkHttp的初始化
4.OkHttp请求流程分析
5.OkHttp的请求拦截链
6.OkHttp请求调度的分析
7.OkHttp的缓存管理
8.深入源码理解HashMap、LinkedHashMap,DiskLruCache
日更一篇,敬请期待哦
小编温馨提示:代码块向右滑动可查看更多代码,长按可复制代码哟
OkHttp的初始化
Initialization of OkHttp
OkHttp的整个的初始化采用了一个生成器的形式来建造,对设计模式不太了解的同学可以去看
https://github.com/mirsfang/ExamplesOfDesignPatterns
接下来进入正题
OkHttpClient的初始化
OkHttpClient在代码中是这样的
OkHttpClient okHttpClient=new OkHttpClient.Builder().build();
OkHttpClient是一个Call的工厂,可以发送http请求和读取他的相响应,通常OkHttpClient官方建议是把他的共性,个人理解就是整个App或者客户端只有一个,不理的话每个client都拥有自己的连接池和线程池,每个客户端去创建连接池和线程池,这些资源都会被浪费掉的。
我们跟着上面的代码来去分析OkHttpClient
OkHttpClient通过生成器的筹建去构架的OkHttpClient,所以我们先看生成器类和构建器的构建方法
首先是生成器的构建方法:
public OkHttpClient build() {
return new OkHttpClient(this);
}
这就尴尬了,,我们来看生成器的构建方法
public Builder() {
dispatcher = new Dispatcher();//调度器 负责执行异步请求时的策略。
protocols = DEFAULT_PROTOCOLS; //协议,包含http1.1和http2
connectionSpecs = DEFAULT_CONNECTION_SPECS;//链接的规格(HTTPS的TSL规格)
eventListenerFactory = EventListener.factory(EventListener.NONE);
proxySelector = ProxySelector.getDefault();//代理服务器
cookieJar = CookieJar.NO_COOKIES;