android 網(wǎng)絡(luò)方案

在56視頻那會,就開始接觸AQuery。直到 2017,網(wǎng)絡(luò)請求這塊才真正換成 OkHttp。掐指一算,竟已有好幾個(gè)年頭。

google了下,相關(guān)資料都好少了。感嘆不已。

言歸正常,下面記錄下這一兩年火熱的 android 網(wǎng)絡(luò)方案:RX + Retrofix2 + OkHttp3

App里少不了網(wǎng)絡(luò)請求,總不能每次都 new Retrofix 或者 new OkHttpClient 增加不必要的開銷。

所以搞了個(gè)單例,如下圖:

這里需要注意的是 context,這玩意兒很容易造成內(nèi)存泄露。

OkHttpClient 的攔截器機(jī)制,看起來真是舒服,一目了然。

根據(jù)上圖,代碼里的流程就是:(1)網(wǎng)絡(luò)請求 -> (2)添加公共參數(shù) -> (3)添加header -> (4)post body的內(nèi)容轉(zhuǎn)換(如果是post請求)-> (5)記錄 api 埋點(diǎn)請求響應(yīng)時(shí)間(如果命中)。

這里需要注意的是,獲取response 后,會倒序路過所有攔截器。比如 ApiCpInterceptor。

如圖所示,記錄了請求開始時(shí)間與結(jié)束時(shí)間。

獲取完 response 并路過所有攔截器后,OkHttp的任務(wù)完成。

輪到 Retrofix 上場,不對,其實(shí)一開始調(diào)用就上場了哈。后續(xù)補(bǔ)充,先繼續(xù) response。此時(shí),會調(diào)用TokenCheckConverterFactory,一開始是直接使用 GsonConverterFactory ,但問題來了,業(yè)務(wù)上需要對token失效的情況做出反應(yīng)。如果用 GsonConverterFactory的話,相關(guān)處理將繼續(xù)往上拋,可能就到 Rx 層面上了。所以自定義了 ConverterFactory,Retrofix 也是超贊的。

最后,看看調(diào)用的接口定義與調(diào)用方法。

Rx 也超贊,由于要去看電影了,寫得很粗糙。閃人。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容