一张图读懂Retrofit

本文介绍了如何阅读Retrofit的源码,从寻找切入点开始,逐步理解其核心模块,包括Retrofit配置、动态代理、ServiceMethod、CallAdapter和Converter。通过UML时序图展示了CallAdapter和Converter的创建过程,以及请求和响应的处理流程。虽然Retrofit设计简洁,但要完全掌握仍需深入研究。
摘要由CSDN通过智能技术生成

如何读源码

三部曲:

  1. 寻找切入点,带着将源码整体化,结构化的意识,开始阅读
    • 从切入点开始将代码一小步一小步的进行模块化的记忆
    • 遇到无法切入时,可以先切换到另一个小模块进行挖掘
    • 建议的切入点:使用中最接近逻辑开始的地方。如网络请求框架的开始请求的地方:retrofit2.Call.enqueue
  2. 阅读的过程中,时刻保持将代码尽心体系化,完整化的意识
    • 每次将小模块完成之后,再进行下一个小块的完善,直到心中有一个完整的整体模块
  3. 时刻保持一个明确的目的进行阅读
    • 阅读的过程中可能会出现需要纵向深入和横向发散的情况,这个时候就需要明确一个方向阅读

Retrofit源码笔记

关键类:

  1. retrofit2.Retrofit 总体配置:如CallAdapter、Converter等
  2. java.lang.reflect.Proxy:动态代理
  3. ServiceClass,使用Retrofit定义网络请求的接口,需要通过动态代理实现(提示:源码有标注这是个啥)
  4. ServiceMethod,Retrofit解析接口得出的网络请求构建类(提示:源码有标注这是个啥)
    1. 解析出ServiceClass的所有网络请求方法
    2. 转换网络请求的返回
    3. 切换网络请求和返回数据的线程
  5. CallAdapter 配置网络请求,切换线程
  6. Converter 用于转换网络请求的返回为需要的类型

示例源码:

class MainActivity : AppCompatActivity() {
   
    val TAG = "MainActivity"
    val permissionRequestCode = 1

    override fun onCreate(savedInstanceState: Bundle?) 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值