【移動(dòng)應(yīng)用開(kāi)發(fā)技術(shù)】android module解耦組件化總體概述(推薦)_第1頁(yè)
【移動(dòng)應(yīng)用開(kāi)發(fā)技術(shù)】android module解耦組件化總體概述(推薦)_第2頁(yè)
【移動(dòng)應(yīng)用開(kāi)發(fā)技術(shù)】android module解耦組件化總體概述(推薦)_第3頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

【移動(dòng)應(yīng)用開(kāi)發(fā)技術(shù)】androidmodule解耦組件化總體概述(推薦)

原由

移動(dòng)開(kāi)發(fā)中,隨著項(xiàng)目不斷的跌代,需求越來(lái)越復(fù)雜后。項(xiàng)目工程也越來(lái)越龐大。那么此時(shí)的分module的開(kāi)發(fā),則是必然的選擇了。在最終的組件化之路上,不妨把單一工程比如石器時(shí)代,那么接下來(lái)簡(jiǎn)單的拆分工程分多個(gè)moudle開(kāi)來(lái)就是銅器時(shí)代。銅器時(shí)代之簡(jiǎn)單分module

演進(jìn)

由于從復(fù)雜的單工程拆分了多個(gè)module了,達(dá)到了代碼及資源的初步的隔離,或需求模塊的開(kāi)發(fā)人員,開(kāi)始專注于自己的需求模塊module的開(kāi)發(fā)了。但是隨著部分需求有相關(guān)性,需要相互調(diào)用時(shí)。那么問(wèn)題來(lái)了,在AXXXmodule中而在BXXXmodule中這時(shí)出現(xiàn)了相互依賴,首先編譯器會(huì)能不過(guò),會(huì)出現(xiàn)Circulardependency,循環(huán)相互依賴的問(wèn)題,這是絕不允許的。為了解決上述的問(wèn)題,將AXXXmodule與BXXXmodule需要對(duì)外提供服務(wù)能力支持的,進(jìn)行封裝與抽象。將需要對(duì)外暴露接口/協(xié)議地方,對(duì)其抽象出接口出來(lái)。把些這接口獨(dú)立放在BaseXXXXmodule中,這樣AXXXmodule與BXXXmodule,都分別去通過(guò)BaseXXXX中間module通信去解決AXXXmodule與BXXXmodule相互依賴調(diào)用通信。初步的解決方法

為了在BaseXXXXmodule中,搭建起AXXXmodule與BXXXmodule相互通信的橋梁,可以在BaseXXXXmodule定義一個(gè)通信標(biāo)識(shí)接口:然后主要通過(guò)ModuleApiHelper進(jìn)行通信這樣比如在AXXXmodule中將原有AServiceData類是如下的:改造成將IAServiceData接口定義在BaseXXXXmodule中。然后AXXXmodule中進(jìn)行register相應(yīng)的服務(wù)這樣調(diào)用AModuleService的init方法,即可對(duì)IAServiceData服務(wù)進(jìn)行注冊(cè)了。然后即下來(lái),在BXXXmodule中進(jìn)行g(shù)etXXX得到服務(wù)即可調(diào)用相應(yīng)的方法了.

在任何需要此服務(wù)的方法可如下調(diào)用:注意

1>register注冊(cè)時(shí)機(jī),需要越早越好,一般建議在各module的有類似的application的onCreate時(shí)注冊(cè)最好。

2>IModuleApi與ModuleApiHelper,和各extends繼承IModuleApi接口的接口,需要放在中間通信BaseXXXModule中。各需要通信的module去compile/apiBaseXXXModule即可。問(wèn)題

為了保證IModuleApi接口注冊(cè)有效,需要越早越好進(jìn)行注冊(cè)。這樣隨著項(xiàng)目越來(lái)越復(fù)雜,需要通信的地方越來(lái)越多。統(tǒng)一的ModuleApiHelper,注冊(cè)的地方將越來(lái)越多帶的問(wèn)題也多起來(lái)。

1>注冊(cè)Map容器占用的內(nèi)存不斷的增多。

2>register注冊(cè)的地方不統(tǒng)一,有些放在各module的類Application的onCreate中,有些可能是放在其它的類中.

3>不支持ui頁(yè)面的跳轉(zhuǎn),由AXXXmodule的AxxActtivy頁(yè)面跳轉(zhuǎn)到BXXXmodule的BxxActivity頁(yè)面中。

4>不支持多進(jìn)程中應(yīng)用。為了解決上述問(wèn)題,引入了蒸汽時(shí)代之ARoute到來(lái)。蒸汽時(shí)代之ARoute

由于遍幅的原因,總體概述不詳細(xì)細(xì)述ARoute,下遍再剖析ARoute。總體來(lái)說(shuō)在多module通信中解決了:

1>解決了ui頁(yè)面的跳轉(zhuǎn)問(wèn)題。

2>根據(jù)需要進(jìn)行register的問(wèn)題,且register通過(guò)靜態(tài)注解來(lái)的,所以register地方統(tǒng)一比如容易

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論