1,retrofit的优势?
(1) , retrofit基于接口设计,这样就能简单的根据业务需求定义接口。
(3), 更为彻底的解耦, retrofit将业务和能力分开。转化器(如Gson等 针对网络请求,回应数据处理),调用适配器(支持RxJava等调用)
(4), 模块化,支持更多业务拓展,如支持自定义转化器Converter对数据回应解析,支持RxJava等调用
2, retrofit接口设计
3,retrofit功能主要功能组件
(1)Retrofit 主要业务逻辑入口, 主要依赖CallAdapterFactory(调用适配器), Converter.Factroy(转化器),CallFactory(调用工厂,实际处理网络请求分发,OkHttpClient), callbackExecutor (与CallAdapterFactory结合使用,定义响应回调执行环境,是否主线程等)
(2)CallAdapterFactory 对调用进行适配,比如有RxJava调用方式,可以支持RXjava方式调用处理
(3)Converter.Factory 针对网络回应的数据进行解析,以及不同格式网络报文传输。如支持json数据的请求及返回需要依赖GsonConverterFactory
(4)CallFactory 实际处理调用网络调用能力,我们知道Retrofit网络能力是由OkHttpClient支持,这里也就是可以自定义OKHttpClient
(5)callbackExecutor 定义网络请求回应后回调方法执行环境,(eg,我们通常调用call.equeue(Callback) 决定当前callback执行环境,默认android平台是在主线程中)
4,retrofit调用分发逻辑
(1) retrofit创建业务接口代理
(2) 业务代理接口调用具体业务方法
(3)业务方法中,会将注解参数(网络请求参数)以及方法参数等由serviceMethod统筹,
(4)创建实际网络调用(内部实际调用OkHttp网络能力),
(5)对网络调用OkHttpCall进一步封装适配(通过callAdapter),支持正常调用和RxJava调用方式返回
(6)创建完Call以后,需要调用call,内部通过okhttp网络能力分发,最终在回调处进行控制,在回应报文中通过
Converter进行数据解析(支持json等),最终返回满足业务需求的结果。