Android 組件化開發 各個Mode之間和App的通信

App開發組件化開發,各個Mode間的通信可能第一次接觸的人不太瞭解;其實有很多種方式的,比較流行的是阿里路由,如果在已有的項目上實現組件化,用阿里路由可能有些麻煩,尤其是App層依賴的資源比較多,暫時那些依賴的資源還沒有挪出來,那Mode調用App層的資源就很難受了。

其實Mode層調用App層的資源或者A-Mode調用B-Mode我們用接口回調的方式也可以實現的,原因是App層都會依賴各Mode,在App裏面可以隨意調用各Mode的資源;我們把App作爲一箇中間傳輸層是很合理的

1.首先我們在Utils-Mode定義一個接口,接口的未實現方法裏面需要傳遞一個Context(用於跳轉各個Mode的頁面)和一個Bean(通用的需要傳遞特殊數據可以很方便的添加),再創見一個Set和Get這個未實現接口的公共類;

/**
 * 設置接口實例的公共類
 */
public class CareerPenCommon {
    private static final CareerPenCommon INSTANCE = new CareerPenCommon();

    public static CareerPenCommon getInstance() {
        return INSTANCE;
    }

    protected ICareerPenMeetingCallback careerPenMeetingCallback;


    public ICareerPenMeetingCallback getCareerPenMeetingCallback() {
        return careerPenMeetingCallback;
    }

    public void setCareerPenMeetingCallback(ICareerPenMeetingCallback careerPenMeetingCallback) {
        this.careerPenMeetingCallback = careerPenMeetingCallback;
    }
}

//接口方法

/**
 * 接口方法
 */
public interface ICareerPenMeetingCallback {

    /**
     * 實現方法
     *
     * @param context
     */
    void onItemMeetingClick(Context context, Bean typeBean);

}

 

2.A-Mode和B-Mode依賴Utils-Mode,可以通過Utils-Mode的公共類裏面的Get接口實例的接口的方法,往裏面傳參數。

這裏注意我們依賴Utils-Mode的時候必須用api project,這樣我們App就不用依賴Utils-Mode了

//調用公共類的Get接口實例的方法,並傳參數

CareerPenCommon.getInstance().getCareerPenMeetingCallback().onItemMeetingClick(context, typeBean);
//依賴Utils-Mode
api project(':modeutils')

3.在我們的App層創建一個實現接口的類,通過實現接口傳遞的參數去做各種操作,在我們的啓動頁調用Utils-Mode的公共類的Set方法去把這個實現接口的類New出來

/**
 * 實現接口的類
 */
public class CareerPenImpl implements ICareerPenMeetingCallback {

    @Override
    public void onItemMeetingClick(Context context, Bean typeBean) { // 會議
       //這裏根據typeBean裏面的數據可以做任何操作
    }
}

//在啓動頁設置這個實現接口

CareerPenCommon.getInstance().setCareerPenMeetingCallback(new CareerPenImpl());

//App層依賴各個Mode 

implementation project(':mymode')

到這我們就完成了各個Mode和App的相互通信了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章