毫無疑問,OkHttp的橫空出世,讓其他網路請求框架都黯然失色,它是一個高效的HTTP客戶端,作為目前Android開發中最為廣泛使用的網路框架,不得不說OkHttp是真的強大真的香,
但在實際的專案開發程序中,這個框架也給開發者們留下了不少問題:
- 無法適配自動進行執行緒的切換,訊息回來需要切到主執行緒,主執行緒要自己去寫,
- 呼叫比較復雜,需要自己進行封裝,
- 用戶網路請求的介面配置繁瑣,尤其是需要配置請求body,請求頭,引數的時候;
- 資料決議程序需要用戶手動拿到responsbody進行決議,不能復用;
- 快取失效:網路請求時一般都會獲取手機的一些硬體或網路資訊,比如使用的網路環境,同時為了資訊傳輸的安全性,可能還會對請求進行加密,在這些情況下OkHttp的快取系統就會失效了,導致用戶在無網路情況下不能訪問快取,
但Retrofit的出現可謂是雪中送炭,通過在OkHttp的基礎上進行封裝,切實解決了這些問題,讓我們在網路框架開發上更加的游刃有余,
Retrofit對OkHttp做了什么
Retrofit是一個非常強大的封裝框架,可以配置不同HTTP client來實作網路請求,如okhttp、httpclient等;可以定制請求方法的引數注解;可以同步或異步RxJava;輕松實作超級解耦;配置不同的反序列工具來決議資料,而且設計模式頗多,使用非常方便靈活:

stay大神整理的Retrofit原始碼流程圖
網路請求的作業本質上仍舊是 OkHttp 完成,Retrofit 負責網路請求介面的封裝,并沒有改變網路請求的本質,因為OkHttp已經足夠強大,Retrofit的封裝則是讓我們更加游刃有余,里面涉及到非常豐富的設計模式,通過注解直接配置請求,可以使用不同的http客戶端,雖然默認用http,但是可以通過不同的Json Converter 來序列化資料,同時對RxJava提供支持,
Retrofit + OkHttp + RxJava是目前比較潮的一套框架,但這套框架其實是有一定門檻的,尤其是Retrofit的核心原理掌握,和OkHttp一樣,Retrofit現在也是大廠面試的必會問題之一:

諸多面試官也會在這部分打出連環重拳:
- Retrofit 是如何作業的
- 用過哪些網路加載庫?Retrofit核心實作原理?
- 如果讓你實作Retrofit的某些核心功能,你會考慮怎么去實作?
- Retrofit的注解是怎么決議的 ?
- Retrofit網路請求層用的什么?
- Retrofit中使用了哪些設計模式?
- Retrofit在OkHttp上做了哪些封裝?動態代理和靜態代理的區別,是怎么實作的?
- Android開發Repository層如何拿到retrofit回傳的資料?
- Retrofit也用apt去做是否可行?為什么不用apt而用動態代理?
怎么快速的深入了解Retrofit原始碼層原理?
《深入Retrofit網路實作原始碼分析及深度決議OKhttp實作原理》
《Android百大框架原始碼決議》
《從OkHttp原始碼解讀到手寫網路訪問框架》
上述視頻中有對Android 網路框架進行講解,大家可以去參考學習,
《Android百大框架原始碼決議》知識點歸納已整理至GitHub,大家可以點擊下方小卡片進行參考學習,

轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/337742.html
標籤:其他
上一篇:Flutter實踐深入分析之——FlutterActivity/Fragment原理流程分析
下一篇:基于另一個輸入的最大日期
