Android Retrofit框架源码分析(配置篇)

Android技术研究原创如需转载请注明出处

以下是在Application中需要配置的Retrofit代码,这是一个典型的Builder模式

建造者模式
定义
将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式。

配置代码.png

首先来分析Retrofit.Builder(),调用默认BuiltInConverters构造初始化,不做任何操作,然后新增BuiltInConverters到List converterFactories列表。

Builder.png

接着分析baseUrl(URL)方法,这里会先通过checkNotNull方法检测传递的url是否为null,接着设置baseUrl,返回当前Builder。

Android Retrofit框架源码分析(配置篇)_第1张图片
parse_url.png
object_isNull.png

接着分析addConverterFactory(GsonConverterFactory.create())方法,首先看看一下代码


Android Retrofit框架源码分析(配置篇)_第2张图片
GsonConverterFactory.png

GsonConverterFactory.create()方法初始化了Gson及GsonConverterFactory,在addConverterFactory方法中

addConverterFactory.png

同样把GsonConverterFactory添加进了converterFactories列表中,然后返回当前Builder。

接着分析addCallAdapterFactory(RxJavaCallAdapterFactory.create())的流程,RxJavaCallAdapterFactory.create()的相关代码如下:

Android Retrofit框架源码分析(配置篇)_第3张图片
RxJavaCallAdapterFactory.create.png

可以看到以上代码中实现了CallAdapter.Factory接口,但是当前只是初始化了RxJavaCallAdapterFactory,没有做其他操作,其他的实现方法等分析到了再做解释,接着分析addCallAdapterFactory方法,该方法相关代码如下:

addCallAdapterFactory.png

此方法把RxJavaCallAdapterFactory对象add到了adapterFactories列表中,然后返回了当前Builder。

接着分析build()方法,该方法相关代码如下:

Android Retrofit框架源码分析(配置篇)_第4张图片
build.png

以上代码中首先校验了url,然后初始化了OKHttpClient对象,然后把之前的RxJavaCallAdapterFactory添加到了局部的adapterFactories列表中,然后add了一个默认的DefaultCallAdapter,接着把全局的converterFactories拷贝到了局部的converterFactories中,一切对象初始化工作做完后开始Retrofit对象的创建,相关代码如下:

new_Retrofit.png

从以上代码中前四个参数在当前的配置中是都有值的,但是callbackExecutor=null和validateEagerly=false(默认值)

Android Retrofit框架源码分析(配置篇)_第5张图片
new_RetorFit.png

初始化Retorfit没有做额外的其他操作,那么配置相关的代码就分析完毕了,在这个过程中我们初始化了BuiltInConverters、GsonConverterFactory、Gson、RxJavaCallAdapterFactory、OKHttpClient、DefaultCallAdapter、Retrofit等对象,下篇接着分析这些对象在Retorfit中的使用。

你可能感兴趣的:(Android Retrofit框架源码分析(配置篇))