當前位置:
首頁 > 最新 > Android項目解耦-路由框架ARouter源碼解析

Android項目解耦-路由框架ARouter源碼解析

前言

上一篇文章Android項目解耦–路由框架ARouter的使用講述了ARouter在項目中的使用,這邊文章主要對ARouter的源碼進行學習和分析。

ARouter的結構

ARouter主要由三部分組成,包括對外提供的api調用模塊、註解模塊以及編譯時通過註解生產相關的類模塊。

註解的聲明和信息存儲類的模塊

編譯期解析註解信息並生成相應類以便進行注入的模塊

核心調用Api功能的模塊

annotation模塊

、、都是我們在開發是需要的註解。

compiler模塊

、、分別為annotation模塊對應的、、在項目編譯時產生相關的類文件。

api模塊

主要是ARouter具體實現和對外暴露使用的api。api部分我們可以參數上一篇文章Android項目解耦–路由框架ARouter的使用,ARouter實現我們具體在下面講解。

ARouter的工作流程

Arouter初始化

_ARouter初始化

LogisticsCenter初始化

ARouter的結構

這五個部分基本構成了ARouter的主體架構。

ARouter(_ARouter)模塊

主要提供對外調用的api,路由協議的具體實現類。

獲取服務

跳轉協議

Postcard模塊

主要為信息的攜帶者,內容是在構造一次路由信息的時候生產的,其繼承於。是在代碼編譯時生成的內容,主要在初始化時對跳轉信息做了緩存。

我們先來看一下一些基礎類的信息:

LogisticsCenter

邏輯中心涉路由信息的處理。主要分為兩個部分初始化路由信息(初始化時已經講述過),和路由跳轉時的路由功能。

DegradeService(降級容錯服務)

路由定址出現問題的時候的容錯處理。

PathReplaceService

從定義的類名我們可以看出來就是替換路徑的服務,在構造路由協議的時候首先都會使用服務進行地址替換。

Interceptor攔截器

在ARouter模塊的時候講述Interceptor的使用,如果本次路由跳轉不是走的綠色通道那麼則會觸發攔截器進行過濾。

攔截器的初始化

的構造時間:

的init方法:

攔截器的工作過程

Autowired的數據傳輸和自動注入

將數據放入intent中,然後getintent獲取賦值。

數據類型轉化

添加路由參數的時候都是放在Bundle中的,傳遞Object對象的時候是通過服務先將其轉化為String類型,然後在獲取的時候再進反序列化。

緩存的數據模板,用int值表示數據類型進行存儲:

編譯時的註解過程中執行數據獲取:

多dex的支持

InstantRun支持

在自己運行過程中,貌似InstantRun是不生效的。這個類是不存在的。

總結


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 振興書城 的精彩文章:

TAG:振興書城 |