框架源码nbsp可能会有趣一点地

本文由谢三弟投稿。

谢三弟的博客      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源码分析[动态代理](







































治白癜风用什么药
北京白癜风治疗的医院在哪里



转载请注明:http://www.92nongye.com/zyjs/2032.html