adapterFactories中这个Factory就是生产CallAdapter的。
CallAdapter就是将网络请求执行器转换成不同平台所适用的。
看一下Factory:她就是定义在CallAdapter中的抽象类Factory。
Factory默认情况下的三种实现这个Factory默认情况下有三种实现。作用就是将默认的网络请求执行器,okHttpCall转换成适合被不同平台用来调用网络请求执行器的格式。
build:
前面是一个非空的判断。然后默认情况下是使用ok进行的,他会把他的成员变量callFactory赋值给callFactory对象,就是说如果没有指定,就调用ok来进行请求。这也就验证了Retrofit只是对网络接口请求的一个封装而已,实质还是要使用ok。
如果这个callFactory对象为空的话,就创建一个OkHttpClient。
Executor:如果没有指定,就会使用默认的callbackExecutor。callbackExecutor就是一种主线程切换到子线程的一种执行器。如果他为空的话就会调用defaultCallbackExecutor进行赋值。
这里向集合中添加CallAdapter.Factory的请求适配器。
然后又会去新建一个数据转换器的工厂集合。在这个集合当中存储的就是默认的数据转换器工厂。
这两个数据集合类都是获取合适的网络请求适配器,数据转换器,但是他们的存储方式都是从首位到末位开始遍历的。在集合中位置越靠前意味着有越高的使用权限。
调用build之后会返回一个Retrofit对象,并配入上述已经配置好的成员变量。完成这最后一步的话,就完成了整个Retrofit的创建。
网友评论