1. 模塊化簡(jiǎn)介太颤?
把一個(gè)app分為多個(gè)功能模塊苞俘,比如注冊(cè)、登錄龄章、推送吃谣、更新、三方支付瓦堵、分享等等多個(gè)模塊基协,然后單獨(dú)開發(fā)每一個(gè)模塊,然后把它們組合起來菇用,拼出一個(gè)app澜驮,叫做模塊化開發(fā)
2. 模塊化架構(gòu)分層?
整體架構(gòu)的劃分最少可以分為2層惋鸥,app業(yè)務(wù)層和module框架層
1>:app業(yè)務(wù)層
app業(yè)務(wù)層指的是:具體的xml文件杂穷、Activity或Fragment具體邏輯悍缠、請(qǐng)求服務(wù)器接口、自定義View等等涉及到app的業(yè)務(wù)邏輯耐量;
2>:module框架層
框架層一定要是所有項(xiàng)目中都可以使用到的飞蚓,一定要與業(yè)務(wù)沒有關(guān)系。
module層一般放:BaseActivity廊蜒、BaseFragment趴拧、Utils工具類、自定義View山叮、聯(lián)網(wǎng)請(qǐng)求等等這些東西
然后把module引入項(xiàng)目中即可
3. 模塊化好處著榴?
1>:減少module框架層與app業(yè)務(wù)邏輯的關(guān)聯(lián)
可以方便、快速的使用到其他項(xiàng)目中屁倔,使得其他項(xiàng)目可以快速集成脑又,不需要像之前那種方式,還需要把一些類單獨(dú)拷貝到項(xiàng)目中:比如BaseActivity锐借、BaseFragment问麸、Utils工具類等
2>:使代碼結(jié)構(gòu)清晰,減少冗余代碼钞翔,提高開發(fā)效率和時(shí)間
1>:可以單獨(dú)升級(jí)
因?yàn)樯?jí)的時(shí)候有可能增加資源严卖,有可能刪除資源,資源指的是圖片嗅战、文字妄田、類等等俺亮,這樣做可以不和其他模塊有任何關(guān)系驮捍,對(duì)這個(gè)其他功能模塊影響很小脚曾;
2>:如果是帶實(shí)習(xí)生開發(fā)东且,直接讓他們做功能就行,不需要關(guān)系項(xiàng)目整體代碼本讥,只需要關(guān)心該模塊的代碼就可以珊泳;
3>:如果以后重構(gòu)代碼,可以只去修改某一個(gè)模塊的代碼拷沸,不需要修改其他功能的代碼色查;
4. 模塊化開發(fā)調(diào)用通知或者開啟另一個(gè)模塊的Activity
- 模塊化開發(fā)后,如果想要啟動(dòng)另一個(gè)Activity撞芍,就不能使用intent秧了,只能使用路由ARouter。
- 模塊之間的通信可以使用廣播序无、EventBus验毡;
5. 注意
可以使用 aar作為模塊化的 最小單位衡创,之所以是 aar,不是jar或者library晶通,原因如下:
1>:jar包不能帶資源璃氢,比如res下的圖片之類;
2>:library很容易被修改狮辽;
3>:aar好處是可以帶資源并且是編譯好的一也,不能被修改,如果想修改喉脖,可以聯(lián)系做aar的人塘秦,聯(lián)系他去升級(jí)就ok;
6. 總結(jié)
個(gè)人覺得动看,一個(gè)優(yōu)秀的模塊化開發(fā)框架尊剔,一定是把所有公用的模塊、公用的代碼全部提取到module層菱皆,而且app業(yè)務(wù)邏輯層一定是非常輕量须误、并且非常的穩(wěn)定、易于維護(hù)仇轻。