android 网络方案

在56视频那会,就开始接触AQuery。直到 2017,网络请求这块才真正换成 OkHttp。掐指一算,竟已有好几个年头。

google了下,相关资料都好少了。感叹不已。

言归正常,下面记录下这一两年火热的 android 网络方案:RX + Retrofix2 + OkHttp3

App里少不了网络请求,总不能每次都 new Retrofix 或者 new OkHttpClient 增加不必要的开销。

所以搞了个单例,如下图:

android 网络方案_第1张图片

这里需要注意的是 context,这玩意儿很容易造成内存泄露。

OkHttpClient 的拦截器机制,看起来真是舒服,一目了然。

android 网络方案_第2张图片

根据上图,代码里的流程就是:(1)网络请求 -> (2)添加公共参数 -> (3)添加header -> (4)post body的内容转换(如果是post请求)-> (5)记录 api 埋点请求响应时间(如果命中)。

这里需要注意的是,获取response 后,会倒序路过所有拦截器。比如 ApiCpInterceptor。

android 网络方案_第3张图片

如图所示,记录了请求开始时间与结束时间。

获取完 response 并路过所有拦截器后,OkHttp的任务完成。

轮到 Retrofix 上场,不对,其实一开始调用就上场了哈。后续补充,先继续 response。此时,会调用TokenCheckConverterFactory,一开始是直接使用 GsonConverterFactory ,但问题来了,业务上需要对token失效的情况做出反应。如果用 GsonConverterFactory的话,相关处理将继续往上抛,可能就到 Rx 层面上了。所以自定义了 ConverterFactory,Retrofix 也是超赞的。

最后,看看调用的接口定义与调用方法。

android 网络方案_第4张图片
android 网络方案_第5张图片

Rx 也超赞,由于要去看电影了,写得很粗糙。闪人。

你可能感兴趣的:(android 网络方案)