一、Retrofit流程图
retrofit1.png二、Retrofit调用逻辑图
retrofit 2.png三、Retrofit 架构图
retrofit3.jpg四、源码分析
(1)retrofit 类:入口类
(2)Platform 类:平台划分、默认配置类
1、Retrofit根据三个平台分别处理:android、ios、java8
我们这里只谈android平台
1、提供默认线程调度器:mianThreadExecutor()
2、提供默认适配器工厂:ExecutorCallAdapterFactory()
(3)ExecutorCallAdapterFactory 类:调度工厂类
(4)OkhttpCall 类:请求控制类
1、持有ServiceMethod对象。
2、通过ServiceMethod对象创建okhttp3.Call对象,并持有。
3、继承Call接口,实现enqueue()/excute()等方法。并在其中调用okhttp3.Call的enqueue()/excute()方法,发起网络请求。
4、解析response数据,通过serviceMethod的responseConverter.covert()转成需要的类型T。
(5)ServiceMethod 类:请求封装类
1、持有okhttp3.Call.Factory 的OkhttpClient对象
2、持有responseConverter 数据转换对象
3、持有HttpUrl、httpMethod、Headers、MediaType等网络请求元素,用于在toRequest()方法中拼接request请求对象。
(6)OkhttpClient 类:发起okhttp请求类
(7)Converter.Factory 类:数据转换类
1、这个转换类,很简单只有三个方法。分别提供三种Converter对象。
2、而Converter类更简单,只有一个convert()方法。
3、Converter仅仅是用来将数据转换而已。
(8)Executor 类:线程调度类
1、这个类在ExecutorCallbackCall类中被持有。
2、功能也很单一,仅仅是用于异步处理的,只有一个execute(Runnable r)一个方法。
网友评论