本文由谢三弟投稿。
谢三弟的博客 1Rtrofit简介Rtrofit源码开头的解释
*RtrofitadaptsaJavaintrfactoHTTPcallsbyusingannotationsonthdclardmthodsto
*dfinhowrqustsarmad.Cratinstancsusing{
linkplainBuildr*thbuildr}andpassyourintrfacto{
link#crat}tognratanimplmntation.Rtrofit利用方法上的注解将接口转化成一个HTTP请求。
简单知道是什么了之后,我们对此提出疑问:
如何将接口转换为网络请求?
谁去进行网络请求?
接下来我们将从Rtrofit的使用作为入口分析。
2Rtrofit分析具体使用首先建立API接口类:
简单的使用就是这样的流程。现在我们开始层层剖析。
工具箱:Rtrofit.Buildr()创建Rtrofit的实例,进行一些配置,这里我们不用多说。但是有一个参数必须得讲讲。
Platform
在构建Rtrofit的时候,会对当前使用平台进行判断,Java8,Android,iOS。
我们看看Android平台的代码:
从代码中我们得知两点:
在Android里我们默认使用的CallAdaptr是ExcutorCallAdaptrFactory()它会返回的是Call.class。关于ExcutorCallAdaptrFactory()我们稍后再说,你先知道这是Android默认CallAdaptr就好。
默认的Callback是在主线程。
外壳:Crat()//生成接口实现类GankApigankApi=rtrofit.crat(GankApi.class);
我在源码里写好了注释:
切合我们实际运用来看看顺序:
GankApigankApi=rtrofit.crat(GankApi.class);
rturn(T)Proxy.nwProxyInstanc(...){...}
CallAndroidcall=gankApi.gtAndroid(1);
publicObjctinvok(...){...}调用代理类的invok()。
直到这里我们已经宏观地了解Rtrofit是怎样的一个流程。
达成初窥门径成就。
千万别骄傲,为了以后走的更远更稳,我们得好好筑基,上面我们用到的是动态代理,强烈建议认真阅读两篇文章。
Rtrofit2源码分析[动态代理](治白癜风用什么药北京白癜风治疗的医院在哪里