Retrofit 理解
Retrofit create()
先是两个判断(不是重点)
Proxy.newProxyInstance 动态代理。
其实就是创建接口类对象,然后把接口类里面的方法存储起来,等到对象被调用时才会调用 invoke()
invoke()
1.获取方法的注解、接口方法返回类型和方法中参数的注解
2.获取 okhttp 的 okhttpCall 并将第一步获取的数据传入
3.调用adapt切换主线程,若有rxjava也做适配
其实第一步中就已经创建calladapter
calladapter 是由 callAdapterFactories 工厂创建的。
工程创建时是将线程切换代理传入作为参数
enqueue()
外面的enqueue是retrofit,其实最终还是调用okhttp的enqueue
最后去解析半成品数据,即方法的参数、返回类型等,然后创建真正的 okhttp.call 。