Retrofit基本用法.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Retrofit基本用法

透过Retrofit使用看其源码设计模式 Retrofit基本用法 我以用户登录作为示例: 声明接口 首先我们先定义一个登录服务接口LoginService,如下: public interface LoginService { @FormUrlEncoded @POST(login) CallString login(@Field(username) String name, @Field(password) String password); } 创建Retrofit对象 Retrofit retrofit = new Retrofit.Builder() .baseUrl() .addConverterFactory(GsonConverterFactory.create()) .build(); 发起请求 LoginService service = retrofit.create(LoginService.class); CallUser call = service.login(user, pwd); call.execute()或call.enqueue() Retrofit关键类 在讲Retrofit实现原理之前,我先说下Retrofit里面涉及到几个关键类都是干什么用的 Retorift: 负责配置请求过程中的基本参数,如:请求地址,结果转换器,自定义OKHttpClient等,同时还会生成请求接口对象 Call: 网络请求执行者(Retrofit.Call),比如:上面示例中最后调用login方法得到的Call对象就是此接口的实例 OkHttpCall: 此类是Retrofit.Call接口的实现,示例中最后调用login方法得到的Call对象就是此类的实例。但是其底层网络请求执行都是通过OkHttp.Call接口间接执行的,也就是说OkHttpCall是对OkHttp.Call网络请求功能的封装。 Converter Converter.Factory: 分别负责网络请求结果转换以及生成Converter转换器 CallAdapter CallAdapter.Factory: 分别负责对Retrofit.Call实例(OkHttpCall)进行适配及生成CallAdapter适配器 Platform: 确定Retrofit当前运行平台,以及确定当前平台默认的的CallAdapter.Factory和Executor ExecutorCallAdapterFactory: Android平台下的默认CallAdapter.Factory实现 ServiceMethod: 解析接口服务所有注解、生成请求对象Request、解析请求结果Response ParameterHandler: 服务接口方法(login())参数解析处理器,配合ServiceMethod进行服务接口参数注解解析 RequestBuilder: 根据参数和URL构造请求需要的OkHttp.Request对象 以上就是Retrofit源码实现中比较关键的10个类及其相关作用 使用流程 实现 设计模式 Builder模式创建Retrofit Retrofit场景 Retrofit retrofit = new Retrofit.Builder() .baseUrl() .addConverterFactory(GsonConverterFactory.create()) .build(); 上面代码的对象创建方式看着是不是似曾相识,看着很眼熟,没错,Android里面的Dialog的创建就是使用的这种方式:Builder模式 Builder模式定义 将一个复杂对象的构建与它的表示分离,使得同样的构建可以创建不同的表示 Builder模式使用场景 相同的方法不同的执行顺序产生不同的结果 多个部件都可以装配到一个对象中,但是产生的结果不同 Builder模式类图 这里写图片描述 Retrofit中的Builder模式 Retrofit中的Builder模式是简化版的Builder模式,省略了抽象建造者和指挥者 不同的配置会对Retrofit产生不同的影响,如果通过addCallAdapterFactory()配置CallAdapterFactory和不配置CallAdapterFactory会对Retrofit产生完全不同的影响。 如果Retrofit中使用构造方法的方式创建对象,则需要实现多个不同参数的构造方法,而使用构造方法创建对象时如果参数太多,很多时候参数代表的意思是不太理解的,总归来说就是创建过程不直观。 Builder模式优缺点 优点: 不需要知道产品

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档