天天看點

View分發module架構

以下是我這個系列的相關文章,有興趣可以參考一下,可以給個喜歡或者關注我的文章。

[Android]如何做一個崩潰率少于千分之三噶應用app--章節清單

這個系列的有關架構的概念,适合有大概 三年以上Android經驗 的同學了解。如果你大概一年半以上經驗,入門進階了,我近段時間會開展分析MVP的相關架構章節。到時有興趣的同學,可以檢視一番。

如果沒看過上一篇Activity分發功能module,還有Fragment分發module架構,請移步檢視。

如果有看過我上兩編文章的同學,才能真正感受到元件化的威力。

這個架構才是真正可以分離出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,也可以掃碼進群。我在這裡期待你們的加入!!!