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:振興書城 |