Retrofit
2022-03-03 01:51:13 0 举报
Retrofit 分析
作者其他创作
大纲/内容
DefaultCallAdapterFactory
call.enqueue()
方法返回值的泛型检查
responseConverter由来(倒推)
get()开始
Android 平台的Platform下返回的是 MainThreadExecutor对象
从 converterFactory 中获取对象并调用 responseBodyConverter()
build()开始
CallbackExecutor 由来(倒退)
loadServiceMethod()
RequestFactory.parseAnnotations()
ServiceMethod
parseAnnotations
callAdapter = createCallAdapter()
HttpServiceMethod.parseAnnotations
使用 OkHttp3 的 Call 对象调用enqueu() 执行网络请求
CallAdapted
retrofit.responseBodyConverter()
CallAdapted的构造参数
validateServiceInterface()
HttpServiceMethod.parseAnnotation() 中的 createCallAdapter()
responseConverter.convert()
adapt()开始
Retrofit包下的 OkHttpCall
responseConverter = createResponseConverter()
callAdapter 的由来(倒推)
enqueue()
创建主线程的 Handler,并将执行代码 post 到主线程
Retrofit
返回 adapt(call)
Retrofit包下的call = new OkHttpCall()
callAdapterFactory 列表中获取的对象的 get() 方法
响应中通过 executor 切换线程,再向外回调
构建 request 请求,并创建 OkHttp3 的 Call 对象
返回CallAdapted(font color=\"#9c27b0\
parseAnnotations()
DefaultCallAdapterFactory构造函数
开始
Builder.build()
HttpServiceMethod
create()
返回匿名对象 CallAdapter
invoke()
HttpServiceMethod 中 createResponseConverter()
Retrofit的build() 中,通过 platform.defaultCallbackExecutor() 获取
Executor callbackExecutor = platform.defaultCallbackExecutor()
retrofit.callAdapter()
loadServiceMethod().invoke()
ExecutorCallbackCall
DefaultCallAdapterFactory类中的 get()
converterFactory 列表添加
返回 callAdapter.adapt(call)
callAdapterFactory列表添加platform.defaultCallAdapterFactory(callbackExecutor)
动态代理
adapt() 中返回 ExecutorCallbackCall(executorfont color=\"#d32f2f\
在响应中通过 parseResponse() 解析响应
收藏
收藏
0 条评论
下一页