国产睡熟迷奷白丝护士系列精品,中文色字幕网站,免费h网站在线观看的,亚洲开心激情在线

      <sup id="hb9fh"></sup>
          1. 千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

            手機(jī)站
            千鋒教育

            千鋒學(xué)習(xí)站 | 隨時(shí)隨地免費(fèi)學(xué)

            千鋒教育

            掃一掃進(jìn)入千鋒手機(jī)站

            領(lǐng)取全套視頻
            千鋒教育

            關(guān)注千鋒學(xué)習(xí)站小程序
            隨時(shí)隨地免費(fèi)學(xué)習(xí)課程

            當(dāng)前位置:首頁(yè)  >  技術(shù)干貨  > 什么是Android組件化,為什么要組件化?

            什么是Android組件化,為什么要組件化?

            來(lái)源:千鋒教育
            發(fā)布人:xqq
            時(shí)間: 2023-10-12 20:36:56 1697114216

            一、Android組件化含義

            組件化是指解耦復(fù)雜系統(tǒng)時(shí),將多個(gè)功能模板拆分、重組的過(guò)程。在Android工程表現(xiàn)上就是把a(bǔ)pp按照其業(yè)務(wù)的不同,劃分為不同的Module。組件化架構(gòu)的目的就是讓每個(gè)業(yè)務(wù)模塊變得相對(duì)獨(dú)立,各個(gè)組件在組件模式下可以獨(dú)立開發(fā)調(diào)試,集成模式下又可以集成到“app殼工程”中,從而得到一個(gè)具有完整功能的APP。

            二、為什么要Android組件化

            1、提高工程編譯速度

            進(jìn)行組件化拆分后,每個(gè)業(yè)務(wù)或者功能都是一個(gè)單獨(dú)的工程,這個(gè)單獨(dú)的工程可以獨(dú)立編譯運(yùn)行,拆分后的工程通常都比較小,代碼量也比較少,我再也不用像以前編譯一下得等待好幾分鐘了。

            2、利于多人團(tuán)隊(duì)協(xié)作開發(fā)

            業(yè)務(wù)組件之間不能相互引用,每個(gè)組件都把對(duì)應(yīng)的業(yè)務(wù)功能收斂在一個(gè)工程里,彼此互不打擾。 在多人團(tuán)隊(duì)里,每個(gè)人只負(fù)責(zé)自己的業(yè)務(wù)模塊,他對(duì)業(yè)務(wù)功能的增刪改查,都只限定在自己的這個(gè)業(yè)務(wù)模塊里,不會(huì)影響其他人的業(yè)務(wù),他代碼質(zhì)量的好壞也只會(huì)影響到自己的業(yè)務(wù)模塊;對(duì)測(cè)試來(lái)說(shuō),也十分方便,大部分情況下,我們只需要著重測(cè)試修改過(guò)的業(yè)務(wù)組件即可,而不用老是進(jìn)行全部回歸測(cè)試。

            3、組件化是功能重用的基石

            業(yè)務(wù)組件類似一個(gè)個(gè)積木一樣,我們可以用積木搭建出不同的房子,同理我們也可以創(chuàng)建多個(gè)不同的APP。我們只需要維護(hù)好每個(gè)組件,需要用到該組件的功能時(shí),一建引用集成就可以了。

            4、提高組件復(fù)用性

            可能有些人會(huì)覺得,提高復(fù)用性很簡(jiǎn)單,直接把需要復(fù)用的代碼做成Android Module,打包AAR并上傳代碼倉(cāng)庫(kù),那么這部分功能就能被方便地引入和使用。但是我們覺得僅僅這樣是不夠的,上傳倉(cāng)庫(kù)的AAR庫(kù)是否方便被復(fù)用,需要組件化的規(guī)則來(lái)約束,這樣才能提高復(fù)用的便捷性。

            5、降低組件間的耦合

            我們需要通過(guò)組件化的規(guī)則把代碼拆分成不同的模塊,模塊要做到高內(nèi)聚、低耦合。模塊間也不能直接調(diào)用,這需要組件化通信框架的支持。降低了組件間的耦合性可以帶來(lái)兩點(diǎn)直接的好處:

            代碼更便于維護(hù)降低了模塊的Bug率

            三、Android組件化基礎(chǔ)

            1、組件之間的跳轉(zhuǎn)

            組件化中兩個(gè)功能模塊時(shí)不直接依賴的,其依賴規(guī)則是通過(guò) Base module 間接依賴,當(dāng)組件之間的 Activity 進(jìn)行界面跳轉(zhuǎn)時(shí),由于沒有相互依賴的關(guān)系,往往會(huì)無(wú)法引用另一個(gè) module 中的 Activity。

            2、隱式跳轉(zhuǎn)

            隱式跳轉(zhuǎn)是通過(guò) Android 原生 Intent 匹配機(jī)制來(lái)實(shí)現(xiàn)相應(yīng)跳轉(zhuǎn),就是使用 Action 來(lái)跳轉(zhuǎn)到對(duì)應(yīng)的 Activity,這樣使用隱式跳轉(zhuǎn)的方式就可以跨 module 實(shí)現(xiàn) Activity 之間的跳轉(zhuǎn)了,注意一點(diǎn),如果移出 Activity 所在的 module 而不移出相應(yīng)的跳轉(zhuǎn),如果繼續(xù)跳轉(zhuǎn)會(huì)出現(xiàn)異常,使用隱式 Intent 跳轉(zhuǎn)需要驗(yàn)證是否會(huì)接收該 Intent,需要對(duì)該 Intent 對(duì)象調(diào)用 resolveActivity() 方法來(lái)判斷至少有一個(gè)應(yīng)用能夠處理該 Intent,通過(guò)隱式跳轉(zhuǎn)的方式還可以設(shè)置 exported 為 false 來(lái)確保只有自己的 App 才能夠啟動(dòng)對(duì)應(yīng)的組件。

            3、ARouter跳轉(zhuǎn)

            在 Android 開發(fā)中可將 module 看成不同的網(wǎng)絡(luò),而對(duì)應(yīng)的 Router 就是連接各個(gè) module 的中轉(zhuǎn)站,這個(gè)中轉(zhuǎn)站可以對(duì)頁(yè)面跳轉(zhuǎn)的參數(shù)等進(jìn)行統(tǒng)一處理,ARouter 是阿里開源出來(lái)的一個(gè)頁(yè)面跳轉(zhuǎn)路由,使用 ARouter 可以替代隱式跳轉(zhuǎn)來(lái)完成不同 module、不同組件之間的跳轉(zhuǎn)以及跳轉(zhuǎn)過(guò)程的監(jiān)聽、參數(shù)的傳遞等,ARouter 支持路徑跳轉(zhuǎn)和 URL 跳轉(zhuǎn)兩種方式,使用也非常靈活,ARouter 的具體使用這里不做介紹,其具體使用會(huì)在單獨(dú)一篇文章中詳解,ARouter 與 Android 傳統(tǒng)跳轉(zhuǎn)方式的對(duì)比如下:

            顯示跳轉(zhuǎn)需要依賴于類,而路由跳轉(zhuǎn)通過(guò)指定的路徑跳轉(zhuǎn);隱式跳轉(zhuǎn)通過(guò) AndroidManifest 集中管理,導(dǎo)致協(xié)作開發(fā)困難;原生使用 AndroidManifest 來(lái)注冊(cè),而路由使用注解注冊(cè)原生 startActivity 之后跳轉(zhuǎn)過(guò)程交由 Android 系統(tǒng)控制,而路由跳轉(zhuǎn)采用的是 AOP 切面編程可對(duì)跳轉(zhuǎn)過(guò)程進(jìn)行攔截和過(guò)濾。

            4、動(dòng)態(tài)創(chuàng)建

            組件化開發(fā)中最重要的一點(diǎn)就是各個(gè)模塊、各個(gè)組件之間要盡可能解耦,這樣很容易就會(huì)想到使用 Java 中的反射機(jī)制,使用反射可在運(yùn)行狀態(tài)下獲取某個(gè)類的所有信息,然后就可以動(dòng)態(tài)操作這個(gè)類的屬性和方法了。如果 Fragment 單獨(dú)作為一個(gè)組件來(lái)使用時(shí),當(dāng)這個(gè) Fragment 組件不需要被移出后,如果是常規(guī)的 Fragment 則會(huì)因?yàn)樗饕坏皆?Fragment 而使得 App 崩潰,想一下如果使用反射創(chuàng)建 Fragment 的方式則至少不會(huì)引起 App 崩潰,這里可以捕捉異常完成相關(guān)邏輯,這樣是不是降低了耦合呢??梢姡m然反射有一定的性能問(wèn)題,但使用反射確實(shí)能在一定程度上降低耦合,學(xué)習(xí)組件化 Java 反射機(jī)制應(yīng)該是必須的一部分。

            延伸閱讀1:組件化結(jié)構(gòu)

            app殼:負(fù)責(zé)管理各個(gè)業(yè)務(wù)組件和打包APK,沒有具體的業(yè)務(wù)功能;業(yè)務(wù)組件層:最上層的業(yè)務(wù),每個(gè)組件表示一條完整的業(yè)務(wù)線,彼此之間相互獨(dú)立;功能/基礎(chǔ)組件層:支撐上層業(yè)務(wù)組件運(yùn)行的基礎(chǔ)業(yè)務(wù)服務(wù);基礎(chǔ)庫(kù):包含了各種開源庫(kù)以及和業(yè)務(wù)無(wú)關(guān)的一個(gè)自研工具庫(kù)。
            聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
            10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
            請(qǐng)您保持通訊暢通,專屬學(xué)習(xí)老師24小時(shí)內(nèi)將與您1V1溝通
            免費(fèi)領(lǐng)取
            今日已有369人領(lǐng)取成功
            劉同學(xué) 138****2860 剛剛成功領(lǐng)取
            王同學(xué) 131****2015 剛剛成功領(lǐng)取
            張同學(xué) 133****4652 剛剛成功領(lǐng)取
            李同學(xué) 135****8607 剛剛成功領(lǐng)取
            楊同學(xué) 132****5667 剛剛成功領(lǐng)取
            岳同學(xué) 134****6652 剛剛成功領(lǐng)取
            梁同學(xué) 157****2950 剛剛成功領(lǐng)取
            劉同學(xué) 189****1015 剛剛成功領(lǐng)取
            張同學(xué) 155****4678 剛剛成功領(lǐng)取
            鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
            董同學(xué) 138****2867 剛剛成功領(lǐng)取
            周同學(xué) 136****3602 剛剛成功領(lǐng)取
            相關(guān)推薦HOT
            為什么分布式數(shù)據(jù)庫(kù)這么喜歡用kv store?

            一、為什么分布式數(shù)據(jù)庫(kù)這么喜歡用kv store雖然不論是單機(jī)數(shù)據(jù)庫(kù)(MySQL、PostgreSQL等等),還是題主說(shuō)到的分布式數(shù)據(jù)庫(kù)(CockroachDB、TiDB)...詳情>>

            2023-10-12 22:21:18
            想開發(fā)一款直播交友APP需要有哪些功能?

            一、想開發(fā)一款直播交友APP需要的功能 1、直播功能:用戶可以選擇視頻一對(duì)一直播和語(yǔ)音一對(duì)一直播兩種方式,觀眾需要支付直播費(fèi)用,直播費(fèi)用由...詳情>>

            2023-10-12 21:47:55
            物聯(lián)網(wǎng)云平臺(tái)用什么數(shù)據(jù)庫(kù)?

            一、物聯(lián)網(wǎng)云平臺(tái)的數(shù)據(jù)庫(kù)1、關(guān)系型數(shù)據(jù)庫(kù)(RDBMS)例如MySQL、PostgreSQL、Oracle等。關(guān)系型數(shù)據(jù)庫(kù)以表格的形式存儲(chǔ)數(shù)據(jù),并使用SQL(Structur...詳情>>

            2023-10-12 21:41:25
            ACTION_CANCEL到底何時(shí)觸發(fā),滑出子View范圍會(huì)發(fā)生什么?

            一、ACTION_CANCEL在這些時(shí)候會(huì)觸發(fā)1、父view攔截事件首先要了解ViewGroup什么情況下會(huì)攔截事件,請(qǐng)看下面一段代碼:@Overridepublic boolean d...詳情>>

            2023-10-12 21:31:42
            設(shè)計(jì)移動(dòng)端表單有哪些注意事項(xiàng)?

            1、分布式表單iPhone目前主要的機(jī)型屏幕尺寸在4.7-5.8英寸,android的尺寸更多一些,但是總體上來(lái)說(shuō),移動(dòng)端的載體手機(jī)屏幕不大,能承載的信息...詳情>>

            2023-10-12 20:59:19
            快速通道