127  
查询码:00001018
安卓每日一题(Android4月29日)
作者: 朱凡 于 2020年04月29日 发布在分类 / FM组 / FM_App 下,并于 2020年04月29日 编辑

请简述 retrofit 中,一个方法的执行流程

参考答案:
首先我们通过我们 create 出来的 retrofit 实例来调用接口方法。所有的 interface 方法都会在 java 动态代理机制的作用下,调用一个匿名类 new InvocationHandler 中的 invoke。在 invoke 中,会根据我们想调用的方法 method 构造出一个 serviceMethod,然后调用 serviceMethod.callAdapter.adapt(okHttpCall) 作为返回结果。
构造 serviceMethod 的时候,会根据 interface 中 method 的的返回类型,构造出 converter 和 callAdapter。其中, converter 一般使用 gson converter。gson converter 可以自动将服务器返回的 json 数据转化成 java 中的 model 类的实例。callAdapter 绝大多数的实现方式是在构造函数中接收一个 okHttpCall 实例,然后将 enqueue 和 execute 委托给这个 okHttpCall 实例来执行。okHttpCall 在获取到服务器数据之后,会利用 serviceMethod.toResponse(body) 来对数据进行转化。其中,转化的时候便利用了 converter。数据转化完成后,封装成 Response<R> ,传递给调用方。其中 R 就是我们的数据类。



 推荐知识

 历史版本

修改日期 修改人 备注
2020-04-29 15:47:20[当前版本] 朱凡 创建版本

  目录
    知识分享平台 -V 4.8.7 -wcp