Retrofit源码解读:callAdapter、GsonConverter等

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的创建。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 目录介绍 1.首先回顾Retrofit简单使用方法 2.Retrofit的创建流程源码分析2.1 Retrofit...
    杨充211阅读 1,090评论 0 16
  • 一、什么是Retrofit A type-safe HTTP client for Android and Jav...
    andcoder阅读 791评论 2 3
  • Retrofit 源码解析 简单用法 Retrofit最简单的用法就是定义一个接口,创建Retrofit对象,调用...
    Kingty阅读 840评论 3 14
  • 本文将顺着构建请求对象->构建请求接口->发起同步/异步请求的流程,分析Retrofit是如何实现的。 开始之前,...
    zhuhf阅读 1,642评论 0 10
  • Retrofit这个开源库出来也有一定年头了,记得之前还是在V1.0的版本的时候,之前在三月份也写过一个Retro...
    lovejjfg阅读 1,471评论 0 5