組件化子模塊間交互

這篇文章的是根據(jù)組件化項目部署實例里面的例子來說明組件之間怎么通信的。
思考:如果我們想personal子模塊跳轉(zhuǎn)到order子模塊怎么辦罩引?

\color{red}{實現(xiàn)方式一:類加載技術(shù)交互}\
注意事項:需要準確的全類名路徑

    public void jumpOrder(View view) {
        // 類加載跳轉(zhuǎn),可以成功怔匣。維護成本較高且容易出現(xiàn)人為失誤
        try {
            Class targetClass = Class.forName("com.migill.modular.order.Order_MainActivity");
            Intent intent = new Intent(this, targetClass);
            startActivity(intent);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

\color{red}{實現(xiàn)方式二:全局Map記錄信息}\
1捌浩、為什么在common中寫一個全局路徑記錄器快集?
因為所有子模塊都引用了公共模塊际度,各個模塊都可以調(diào)用common中的方法葵袭。
2、在什么地方寫全局Map中添加數(shù)據(jù)的代碼?
在app模塊中的AppApplication中添加記錄,在集成化模式時乖菱,app引用order坡锡、personal子模塊。

  • 跳轉(zhuǎn)的實現(xiàn)窒所,Personal_MainActivity實現(xiàn)如下方法鹉勒。
    public void jumpOrder(View view) {
        Class<?> targetClass = RecordPathManager.getTargetClass("order", "Order_MainActivity");
        if (targetClass == null) {
            Log.e(Constant.TAG, "獲取跳轉(zhuǎn)targetClass失敗吵取!");
            return;
        }
        Intent intent = new Intent(this, targetClass);
        startActivity(intent);
    }
  • 全局Map添加數(shù)據(jù)
public class AppApplication extends BaseApplication {
    @Override
    public void onCreate() {
        super.onCreate();
        RecordPathManager.joinGroup("app", "MainActivity", MainActivity.class);
        RecordPathManager.joinGroup("order", "Order_MainActivity", Order_MainActivity.class);
        RecordPathManager.joinGroup("personal", "Personal_MainActivity", Personal_MainActivity.class);
    }
}
  • 全局路徑記錄器(根據(jù)子模塊分組)
package com.migill.common;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class RecordPathManager {
    //key "order"組 value:order子模塊下禽额,對應(yīng)所在的Activity路徑信息
    private static Map<String, List<PathBean>> groupMap = new HashMap<>();

    /**
     * 將路徑信息加入全局Map
     * @param groupNmae 組名,如"personal"
     * @param pathName  路徑名皮官,如"Personal_MainActivity"
     * @param clazz     類名脯倒,如"Personal_MainActivity.java"
     */
    public static void joinGroup(String groupNmae, String pathName, Class<?> clazz) {
        List<PathBean> list = groupMap.get(groupNmae);
        if (list == null) {
            list = new ArrayList<>();
            list.add(new PathBean(pathName, clazz));
            groupMap.put(groupNmae, list);
        } else {
            for (PathBean pathBean : list) {
                if (pathName.equalsIgnoreCase(pathBean.getPath())) {
                    return;
                }
            }
            list.add(new PathBean(pathName, clazz));
            groupMap.put(groupNmae, list);
        }
    }

    /**
     * 根據(jù)組名和路徑名獲取類對象,達到跳轉(zhuǎn)的目的
     *
     * @param groupName
     * @param pathName
     * @return
     */
    public static Class<?> getTargetClass(String groupName, String pathName) {
        List<PathBean> list = groupMap.get(groupName);
        if (list == null) {
            return null;
        }
        for (PathBean pathBean : list) {
            if (pathName.equalsIgnoreCase(pathBean.getPath())) {
                return pathBean.getClazz();
            }
        }
        return null;
    }

    /**
     * 清理捺氢、回收
     */
    public static void recycleGroup() {
        groupMap.clear();
        groupMap = null;
        System.gc();
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末藻丢,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子摄乒,更是在濱河造成了極大的恐慌悠反,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,464評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件馍佑,死亡現(xiàn)場離奇詭異斋否,居然都是意外死亡,警方通過查閱死者的電腦和手機挤茄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,033評論 3 399
  • 文/潘曉璐 我一進店門如叼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人穷劈,你說我怎么就攤上這事笼恰。” “怎么了歇终?”我有些...
    開封第一講書人閱讀 169,078評論 0 362
  • 文/不壞的土叔 我叫張陵社证,是天一觀的道長。 經(jīng)常有香客問我评凝,道長追葡,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,979評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮宜肉,結(jié)果婚禮上匀钧,老公的妹妹穿的比我還像新娘。我一直安慰自己谬返,他們只是感情好之斯,可當(dāng)我...
    茶點故事閱讀 69,001評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著遣铝,像睡著了一般佑刷。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上酿炸,一...
    開封第一講書人閱讀 52,584評論 1 312
  • 那天瘫絮,我揣著相機與錄音,去河邊找鬼填硕。 笑死麦萤,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的廷支。 我是一名探鬼主播频鉴,決...
    沈念sama閱讀 41,085評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼恋拍!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起藕甩,我...
    開封第一講書人閱讀 40,023評論 0 277
  • 序言:老撾萬榮一對情侶失蹤施敢,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后狭莱,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體僵娃,經(jīng)...
    沈念sama閱讀 46,555評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,626評論 3 342
  • 正文 我和宋清朗相戀三年腋妙,在試婚紗的時候發(fā)現(xiàn)自己被綠了默怨。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,769評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡骤素,死狀恐怖匙睹,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情济竹,我是刑警寧澤痕檬,帶...
    沈念sama閱讀 36,439評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站送浊,受9級特大地震影響梦谜,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,115評論 3 335
  • 文/蒙蒙 一唁桩、第九天 我趴在偏房一處隱蔽的房頂上張望闭树。 院中可真熱鬧,春花似錦荒澡、人聲如沸蔼啦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,601評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽捏肢。三九已至,卻和暖如春饥侵,著一層夾襖步出監(jiān)牢的瞬間鸵赫,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,702評論 1 274
  • 我被黑心中介騙來泰國打工躏升, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留辩棒,地道東北人。 一個月前我還...
    沈念sama閱讀 49,191評論 3 378
  • 正文 我出身青樓膨疏,卻偏偏與公主長得像一睁,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子佃却,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,781評論 2 361