Retrofit 理解

Retrofit create()

Retrofit 理解
先是两个判断(不是重点)
Retrofit 理解

Proxy.newProxyInstance 动态代理。

其实就是创建接口类对象,然后把接口类里面的方法存储起来,等到对象被调用时才会调用 invoke()
Retrofit 理解

invoke()

1.获取方法的注解、接口方法返回类型和方法中参数的注解
Retrofit 理解
Retrofit 理解
Retrofit 理解

2.获取 okhttp 的 okhttpCall 并将第一步获取的数据传入
Retrofit 理解
Retrofit 理解
3.调用adapt切换主线程,若有rxjava也做适配
其实第一步中就已经创建calladapter
Retrofit 理解
calladapter 是由 callAdapterFactories 工厂创建的。
Retrofit 理解
Retrofit 理解
工程创建时是将线程切换代理传入作为参数
Retrofit 理解
Retrofit 理解

enqueue()

外面的enqueue是retrofit,其实最终还是调用okhttp的enqueue
Retrofit 理解
Retrofit 理解
Retrofit 理解
Retrofit 理解
最后去解析半成品数据,即方法的参数、返回类型等,然后创建真正的 okhttp.call 。

Retrofit 理解
Retrofit 理解
Retrofit 理解

RXJAVA 适配

Retrofit 理解
Retrofit 理解