Android 組件化應該做什麼

前言

Android 任何一個組件化方案都要對項目進行一定程度的整改,下面會對所有需要整改的地方進行說明,以及會說到如何整改

資源文件

資源文件在準備組件化的過程中就得做,不會影響正常的開發,一旦後續需要徹底剝離的時候,就直接把對應的文件拖到指定的模塊就可以了

公用的資源

一個項目中肯定有一些是每一個地方都可能用到的資源,所以會有一個模塊去存放這些東西,我可能新建一個 “ModuleResource” 去放這些資源,然後使用一個固定的前綴去命名,比如顏色白色: resource_white
確定字符串:resource_confirm

Layout

Layout 文件的名稱需要對應的模塊前綴,比如用戶模塊的登錄界面,用戶模塊爲 “User”,所以這裏的登錄界面的佈局文件名稱爲 user_login_act
比如用戶模塊的登錄界面一個提示框, “user_login_tip_dialog”

drawable

同 Layout 的方式

string

這個資源不同於 Layout 和 drawable,我建議是把所有字符串都放到 ModuleResource 公共資源包中,以後做國際化也方便,而且字符串沒必要按照模塊劃分

style & theme

一般來說,顏色的使用都是根據場景和組件來的,Google也是這樣子做的,所以這東西頁也沒法模塊劃分,所以直接放到 ModuleResource 公共資源包中,做好場景和組件的顏色聲明就好了,但是如果後期項目實在是做大了,也可以在自己的模塊中去聲明自己模塊的顏色

功能的拆分

當只有一個 app module 的時候,我們所有的代碼都能引用到,導致各種功能之間互相引用,所以在準備組件化的時候,我們應該把一個一個的功能提取出來,寫成 接口-實現類 的方式,然後配合一個組件化方案,暴露接口隱藏實現類,讓之後分模塊了之後也能跨模塊調用,這點很重要,實現組件化過程中很重的一環,而且做這個事情也會讓你的項目每一個模塊職責更加的明瞭

業務模塊

每一個業務模塊都需要有一個唯一的包名,這樣內部的文件就肯定不會重合到了

界面的跳轉

使用任何一個組件化方案,都基本上有路由這個功能,它可以讓你跨模塊的啓動 Activity 界面,屏蔽實現,暴露 uri.但是也有一些組件化方案比如 cc組件化,它沒有這個概念,雖然也有類似的 host 和 path 的調用,但是本身不是基於 Uri 實現的,所以對於這方面我更加喜歡 ARouter 或者 WMRouter 或者 ActivityRouter,這些都是基於 Uri 的

基於 Uri 其實是有好處的,首先很多地方的跳轉都可以用鏈接表示,很方便.而且我可以添加各種 query 參數來傳遞數據給目標界面

總結

組件化方案很多,但是我建議大家都能深入瞭解一點組件化,選擇一個適合自己的,這裏我也有一個組件化的方案,相比來說,有以下的優點

  • 只要有 Context 或者 Fragment,就能代替 onActivityResult,直接跳轉回調裏面拿數據(支持第三方界面和系統界面),這點非常有用,不然你就要被 onActivityResult 束縛
  • 支持手動取消路由,還有當對應發起的 Fragment 或者 Activity 銷燬的時候,自動會取消相關的路由
  • 攔截器種類中有一種特殊的頁面攔截器,簡明扼要的說就是進入目標界面之前會自動執行的攔截器,這種攔截器特別的有用,比如給目標界面標記一個登錄攔截器,那麼這個界面就必須登錄才能進去
  • 能爲每一個業務模塊提供一個聲明週期,讓每一個業務模塊有初始化和銷燬的機會
  • 其他功能可能其他框架也具備,這裏也就不在細說了

這是開源的方案的地址,感興趣的可以看看,歡迎 star 或者 fork

https://github.com/xiaojinzi123/Component

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章