天天看點

進階工程師的不二之選,Github常年霸榜的超強架構-Retrofit

前言

每個Android開發者在産品開發的過程中,都需要用到網絡和伺服器進行互動。而對于網絡架構的使用和了解,往往可以看出一個開發者到底處于什麼段位:

  • 初級工程師:雖然也會使用OkHttp、Retrofit等架構,但基本都是機械的套用,對其源碼、核心原理所知甚少,需要付出大量的時間研究源碼。
  • 中級工程師:對于常見網絡架構的内部原理有些了解,在項目開發過程中往往都能根據業務需求選用合适的架構。但遇到問題的時候還是經常需要尋求開源方案支援,通常這個時候他們會自行設計一個盡可能小的封裝。
  • 進階工程師:一般會在項目中擔任其架構選取的任務。他們對對http請求、線程池、緩存的知識了然于心,對網絡架構的選擇标準,一定是高性能,且簡潔易用。是以基于OkHttp進行封裝的Retrofit基本是他們的不二之選,且在支援converter擴充和rxjava,擴充性不好對他們高超的重構和封裝技巧根本不是問題。而且對于Retrofit的核心思想熟絡于心,可以很好地遷移到其他的開發工作中。

Retrofit為何成為高工最愛?

作為最為廣泛使用的網絡請求架構,OkHttp其實已經非常強大。但是在實際開發過程中,大家還是會遇到不少問題:無法适配自動線程的切換、調用複雜、網絡請求接口配置繁瑣、緩存失效……。而Retrofit的二次封裝,可以很好地解決這些問題,為OkHttp如虎添翼。

Retrofit是一個非常強大的封裝架構,可以配置不同HTTP client來實作網絡請求,如OkHttp、httpclient等;可以定制請求方法的參數注解;可以同步或異步RxJava;輕松實作超級解耦;配置不同的反序列工具來解析資料,而且設計模式頗多,使用非常友善靈活:

進階工程師的不二之選,Github常年霸榜的超強架構-Retrofit

Retrofit沒有改變網絡請求的本質,這部分仍舊由OkHttp完成。它最主要的特點在于設計模式非常豐富,可以通過注解直接配置請求,可以适配不同的http用戶端,而且通過不同的Json Converter 來序列化資料,同時對RxJava提供支援。是以Retrofit + OkHttp + RxJava是目前高工最鐘意的一套架構。

進階工程師的不二之選,Github常年霸榜的超強架構-Retrofit

但這套架構其實是有一定門檻的,想要用好這套架構,對于Retrofit的核心原理一定要十分熟悉。

為什麼推薦你學?

現在BATJ等大廠的面試套路都是一樣的:他們會讓你談談Retrofit的具體使用,你有在自己的項目中使用過嗎?然後擴充到和這個知識點相關的更深層次的知識點細節,會對Retrofit刨根問底:

  • 用過哪些網絡加載庫?Retrofit核心實作原理?
  • 如果讓你實作Retrofit的某些核心功能,你會考慮怎麼去實作?
  • Retrofit的注解是怎麼解析的 ?
  • Retrofit網絡請求層用的什麼?
  • Retrofit中使用了哪些設計模式?
  • Retrofit在OkHttp上做了哪些封裝?動态代理和靜态代理的差別,是怎麼實作的?
  • Android開發Repository層如何拿到retrofit傳回的資料?

直到問的你答不上來為止,以此來探尋你的技術邊際,這樣就能更深入地了解你的技術能力。其實,想要成為真正的進階架構師除了熟練Retrofit外往往還需要掌握其他架構知識。

如何學習Retrofit?

其實很簡單, 我這裡有一份Android源碼解析學習資料,希望能幫助大家更好地學習掌握Retrofit的核心原理。

進階工程師的不二之選,Github常年霸榜的超強架構-Retrofit

1.深入解析 Retrofit 源碼

進階工程師的不二之選,Github常年霸榜的超強架構-Retrofit

2.與其他網絡請求開源庫對比

進階工程師的不二之選,Github常年霸榜的超強架構-Retrofit

3.Retrofit 的本質流程

進階工程師的不二之選,Github常年霸榜的超強架構-Retrofit

4.建立網絡請求接口的執行個體

進階工程師的不二之選,Github常年霸榜的超強架構-Retrofit

5.外觀模式

進階工程師的不二之選,Github常年霸榜的超強架構-Retrofit

由于篇幅較長,細節内容比較多,暫時隻展示這些

大家的支援和認可,是我分享的最大動力。