<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          MVVMFrameComponentMVVMFrame 組件化方案

          聯(lián)合創(chuàng)作 · 2023-09-24 06:20

          基于 MVVMFrame 框架為核心基礎(chǔ)庫(kù)構(gòu)建的組件化方案

          主要使用的核心技術(shù)

          • JetPack(Lifecycle,LiveData,ViewModel,Room)
          • Dagger
          • DataBinding
          • Retrofit
          • OkHttp
          • Glide
          • Kotlin coroutines
          • ARouter

          架構(gòu)

          MVVMFrameComponent 組件化架構(gòu)圖分層如下:

          Architecture

          因?yàn)榻M件化的核心基礎(chǔ)庫(kù)是基于 MVVMFrame,這里貼出 MVVMFrame 的架構(gòu)圖如下:

          Architecture

          淺談組件化

          1. 什么是組件化?

          組件化簡(jiǎn)單概括就是把一個(gè)功能完整的 App 或 模塊 拆分成多個(gè)子模塊, 讓每個(gè)子模塊可以獨(dú)立編譯和運(yùn)行, 也可以作為 library 合并到宿主App組成一個(gè)完整的 App進(jìn)行編譯和運(yùn)行。每個(gè)模塊即可以不相互依賴,又可以相互交互。

          1. 為什么要組件化?

          當(dāng)一個(gè)項(xiàng)目隨著時(shí)間的推移,需求不斷的變更與迭代。各個(gè)模塊也會(huì)變的相對(duì)復(fù)雜。維護(hù)難度也會(huì)隨之增加,時(shí)間久了,可能會(huì)引起一些新的問題。這時(shí)我們就需要組件化。

          1. 組件化的優(yōu)勢(shì)是什么?

          當(dāng)一個(gè)App使用組件化開發(fā)方案時(shí),主要的優(yōu)勢(shì)有:組件化拆分各個(gè)模塊后,每個(gè)子模塊都可以獨(dú)立編譯和運(yùn)行,這樣在開發(fā)調(diào)測(cè)某個(gè)模塊時(shí),可以大大提高編譯速度和開發(fā)效率。多人開發(fā)時(shí),每個(gè)人負(fù)責(zé)獨(dú)立的模塊,更有利于多人團(tuán)隊(duì)協(xié)作開發(fā)。并且各個(gè)模塊之間的代碼邊界相對(duì)清晰,更易于后期維護(hù)。

          MVVMFrameComponent 組件化方案

          MVVMFrameComponent = MVVMFrame + Component。即 MVVMFrameComponent 采用 MVVM 模式架構(gòu)的組件化方案。

          工程各個(gè) Module 相關(guān)說明

          app

          宿主App:當(dāng)各個(gè)子 Module 作為 library 時(shí),則可將所有組件集成到 宿主App 中。此時(shí) 宿主App 則是一個(gè)擁有所有組件功能集合的完整的App。

          common-base

          組件化公共基礎(chǔ)庫(kù):主要包含 MVVMFrame 快速開發(fā)框架,和作為組件化的一些公共的核心基礎(chǔ)庫(kù),方便快速構(gòu)建組件化 Project。

          common-res

          組件化公共資源庫(kù):主要方便統(tǒng)一管理各個(gè) Module 中的一些公共資源相關(guān)。

          module-joke

          一個(gè)簡(jiǎn)單的笑話功能模塊:主要用來展示基于 MVVMFrame 來實(shí)現(xiàn)組件化開發(fā),作為組件化開發(fā)的 Module 實(shí)現(xiàn)示例之一。

          module-news

          一個(gè)簡(jiǎn)單的新聞功能模塊:主要用來展示基于 MVVMFrame 來實(shí)現(xiàn)組件化開發(fā),作為組件化開發(fā)的 Module 實(shí)現(xiàn)示例之一。

          其他

          特別說明

          Project -> build.gradle 內(nèi)的自定義變量 isBuildModule

          自定義變量 isBuildModule 來統(tǒng)一管理各個(gè)子 module 方便在 application 與 library 之間進(jìn)行切換

          當(dāng) isBuildModule = true 時(shí),表示 各個(gè)子 module 為 application ,即 module 可獨(dú)立運(yùn)行 當(dāng) isBuildModule = false 時(shí),表示 各個(gè)子 module 為 library ,即 module 作為 library 合并到 宿主App

          Project -> module-build.gradle

          組件化子 module 通用 build.gradle ,方便統(tǒng)一管理

          根據(jù) isBuildModule 來統(tǒng)一管理各個(gè)子 module 在 application 與 library 之間切換

          關(guān)于 MVVMFrame

          因?yàn)?nbsp;MVVMFrameComponent 的核心基礎(chǔ)庫(kù)是基于 MVVMFrame 的,所以需要對(duì) MVVMFrame 有一定的了解,才能在使用 MVVMFrameComponent 時(shí)更加得心應(yīng)手, 這里不再特意介紹 MVVMFrame 相關(guān)的使用,具體介紹你可以直接查看 MVVMFrame

          示例

          關(guān)于各組件/模塊共用 Application 初始化

          在每一個(gè)子模塊,寫一個(gè)IComponentApp的實(shí)現(xiàn)類,實(shí)現(xiàn)各個(gè)子模塊共用 Application,示例如下:

          //這是app中的示例
          class AppComponentApp: IComponentApp {
          
              override fun onCreate(app: BaseApp) {
                  DaggerAppMainComponent.builder()
                      .appComponent(app.appComponent)
                      .build()
                      .inject(app)
          
              }
          
          }

          在 Manifest 中配置 meta-data 對(duì)應(yīng)的IComponentApp實(shí)現(xiàn)類,示例如下 :

                  <meta-data android:name="com.king.mvvm.component.app.AppComponentApp"
                      android:value="ComponentApp"/>

          更多使用詳情,請(qǐng)查看app中的源碼使用示例

          瀏覽 15
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  www.污污污在线观看 | TS人妖三级 | 日逼AV | 青青草视频免费观看 | 亚洲色无码A片一区二小说 |