您的当前位置:首页正文

Retrofit2.0 源码思路整理

来源:华佗小知识

看了下之前4月份写的Retrofit使用和 源码分析,发现,源码这种东西,忘记比较快,只能知道大概是怎么的,但是从头去看,花点时间,可以回顾,但是发现思路比较乱,或许是前一次看了太久了,于是整理下,梳理下


Retrofit 2.0 .png

思路整理:

1.创建retrofit

Retrofit retrofit = new Retrofit.Builder() 
 
.addConverterFactory(GsonConverterFactory.create()) 
.build();
1.1第一步 Retrofit :
1.2.第二步build()

这个类的成员变量和Retrofit的是对应的,而配置就是通过这个类来配置的, 无参调用了自己的有参构造,传入的参数是PlatForm.get()——get() 返回的是一个静态变量,静态变量是调用——findPlatForm方法,这个方法中通过calss.forName("adnrod.os.build"),也就是调用里面静态构造 判断这个build .version,sdk.int !=0 就new Android()是安卓平台创建一个android对象—— android() 继承platform主要是返回数据做线程切换回主线程显示UI的 重写了defaultcallBack方法,这个newHandler 并绑定主线程,然后post 切换线程 线程切换的流程是 先从第一个重写的defalutCallAdapter
Factroy 生成一个call对象,然后用这个对象,enquene(callback )从而调用第二个重写方法的excute通过handler完成 ——最后返回一个platForm对象 有参构造:首先是接受上面的platform对象,然后往成员list,存放数据转换器factory的,添加一个new BuiltInConvers对象 这个是一个内置的数据转换器,怼他初始化,
整个是设置了默认值。没有正真为retrofit成员变量赋值

1.3.第3步baseUrl
1.4.第4步
add ConverterFactory( GsonConverterFactory.create())

GsonConverterFactory.create() 创建了一个含有Gson对象实例的GsonConverterFactory,并返回给addConverterFactory()并
addConvertFactory方法,就是网build类的 转换器工厂list 添加 上面的含有gson对象的工厂类,
Retrofit默认使用Gson进行解析 如果是其他数据格式 可以自定义继承convert factory 就可以

1.5..第5步 build

配置网络请求执行器,配置回调方法执行器,网络请求适配器工厂,数据转换器工厂 然后new Retrofit 返回
建造者模式,所以开发者并不需要关心配置细节就可以创建好Retrofit实例,

2、创建网络请求接口实例

    1,定义    接受网络请求实体类
    2.定义接口类
    3.接口     j   =  retofit.create(接口.class)
    4.Call<1的对象>  call    =   j .接口中的getCall()

3.执行网络请求