View分發module架構

如下是我這個系列的相關文章,有興趣能夠參考一下,能夠給個喜歡或者關注個人文章。
git

[Android]如何作一個崩潰率少於千分之三噶應用app--章節列表github

這個系列的有關架構的概念,適合有大概 三年以上Android經驗 的同窗理解。若是你大概一年半以上經驗,入門進階了,我近段時間會開展分析MVP的相關架構章節。到時有興趣的同窗,能夠查看一番。架構

若是沒看過上一篇Activity分發功能module,還有Fragment分發module架構,請移步查看。

若是有看過我上兩編文章的同窗,才能真正感覺到組件化的威力。app

這個框架纔是真正能夠分離出module架構,反映出組件化開發的分工的架構方式。框架

一.從Activity和Fragment做出分發,有些人必定會想知道最小能夠分發module的分子是什麼?

應該是View。函數

在Activity和Fragment分發的架構中能夠看出,都是分發一個RelativeLayout到其餘module裏面做爲佈局View的。組件化


View架構圖示

那麼最小單位就應該是分發一個RelativeLayout做爲Module的View佈局。佈局

從Fragment的佈局中能夠是把相關的RelativeLayout id加入到視圖Map裏面學習

而後經過id來獲取視圖再分發到每一個module的moduleContext裏面優化


關聯視圖

你是否清楚View和ViewGroup的生命週期?

若是咱們但願每一個module裏面都應該擁有Activity或者Fragment的週期,那麼應該如何處理?

請認真思考一下。

上兩章所說Fragment和Activity,都擁有本身的生命週期,咱們經過封裝抽象類,重寫他們的方法,讓其每一個Module都擁有Fragment和Activity同樣的生命週期。

可是View並無像Activity和Fragment同樣的生命週期流程。頁面暫停恢復,View是無法經過自身的方法感知到外部Activity和Fragment的狀況的。

那麼咱們只能抽象類View,讓其設定一些生命週期函數。


ModuleManagerView

經過外部依附的Activity或Fragment生命中調用,傳遞週期。


生命週期傳遞

固然有熟知View或者ViewGroup生命週期的函數的同窗,也能夠自主去作一些周期函數優化,例如

onDetachedFromWindow,onFinishInflate等等。

而後須要在Fragment的onCreateView或者Activity的onCreate中建立出抽象類View出來,只須要複寫一個moduleConfig的方法就能夠完成。


抽象類建立時

理論上ViewModuleManager和FragmentModuleManager獲取的root分發moduleContex的對象應該無差異。


ViewModuleManager

在ModuleBus的例子裏,將提供一個簡單的實例讓你們參考。

添加一個page_view的module用於做爲分發的module,其依賴於base module,而app module要依賴於這個page_view的module。

PageConfig添加模塊入口的包名文件地址。

在Fragment中添加上面所說得ModuleManagerView的實例。(Activity也是同樣的方式便可建立)

參考上一節的ModuleExampleFragment的顯示,添加了Page_View顯示的佈局。


View視圖

固然演示樣例,都會放到ModuleBus的開源代碼上面,歡迎你們給個star支持一下。

組件化非必定要用到ModuleManagerView,這裏是介紹只是ModuleManagerView爲組件化最小單位,是讓你們有這樣的概念思想。有同窗以爲管理成本太大,能夠考慮優化,我很歡迎聽到更多的建議。

這節的內容就到這裏,

你內心面是否有組件化的概念?你以爲這個架構如何?你以爲是否有什麼缺陷的地方?

下一節,將會給出一些組件化優化的策略,敬請期待!!!

我創建了一個關於Android架構學習的羣,裏面能夠進一步進行組件化學習和架構思想的的交流。

羣號是316556016,也能夠掃碼進羣。我在這裏期待大家的加入!!!

相關文章
相關標籤/搜索