在56视频那会,就开始接触AQuery。直到 2017,网络请求这块才真正换成 OkHttp。掐指一算,竟已有好几个年头。
google了下,相关资料都好少了。感叹不已。
言归正常,下面记录下这一两年火热的 android 网络方案:RX + Retrofix2 + OkHttp3
App里少不了网络请求,总不能每次都 new Retrofix 或者 new OkHttpClient 增加不必要的开销。
所以搞了个单例,如下图:
这里需要注意的是 context,这玩意儿很容易造成内存泄露。
OkHttpClient 的拦截器机制,看起来真是舒服,一目了然。
根据上图,代码里的流程就是:(1)网络请求 -> (2)添加公共参数 -> (3)添加header -> (4)post body的内容转换(如果是post请求)-> (5)记录 api 埋点请求响应时间(如果命中)。
这里需要注意的是,获取response 后,会倒序路过所有拦截器。比如 ApiCpInterceptor。
如图所示,记录了请求开始时间与结束时间。
获取完 response 并路过所有拦截器后,OkHttp的任务完成。
轮到 Retrofix 上场,不对,其实一开始调用就上场了哈。后续补充,先继续 response。此时,会调用TokenCheckConverterFactory,一开始是直接使用 GsonConverterFactory ,但问题来了,业务上需要对token失效的情况做出反应。如果用 GsonConverterFactory的话,相关处理将继续往上抛,可能就到 Rx 层面上了。所以自定义了 ConverterFactory,Retrofix 也是超赞的。
最后,看看调用的接口定义与调用方法。
Rx 也超赞,由于要去看电影了,写得很粗糙。闪人。
网友评论