ModuleCaller使用说明

ModuleCaller

用于android组件化开发的依赖注入库,解决模块互调的问题,降低模块之间的耦合性。

下载aar文件

点击下载最新版aar

使用方法

1.项目集成

可以使用本地aar库或者gradle依赖

a)使用aar库

在项目的根目录下新建libs目录,拷入ModuleCaller.aar
在项目的build.gradle文件中添加以下代码:

allprojects {
    repositories { 
        flatDir{
            dirs'libs'
        }
    }
}

在需要引用ModuleCaller的模块的build.gradle文件中,增加以下代码:

repositories {
    flatDir {
        dirs '../libs'
    }
}

dependencies {
    implementation(name: '../libs/ModuleCaller', ext: 'aar')
}

b)使用gradle依赖

在项目的build.gradle文件中添加以下代码:

allprojects {
    repositories {
        maven {
            url 'https://jitpack.io'
        }
    }
}

在需要引用ModuleCaller的模块的build.gradle文件中,增加以下代码:

dependencies {
    implementation 'com.github.ldw825:ModuleCaller:Tag'
}

其中Tag写版本名称,如”1.0.1“

app模块需要依赖其他模块,在build.gradle中添加:

implementation project(':module1')
implementation project(':module2')
implementation project(':module3')
......

2.代码使用

最好是每个模块新建一个类,专门用于定义向外提供的接口,但这不是必须的。

在需要定义外部接口的类上面添加注解:

@ModuleClass(module = "xxx")

其中”xxx“指模块的名称,为任意字符串,不过最好与本模块的名称保持一致(非必须)。

在该类的接口方法前添加注解,如:

@ModuleMethod 
public void jumpToPaymentActivity(Context context, Intent intent) {
    intent.setComponent(new ComponentName(context, PaymentActivity.class));
    context.startActivity(intent);
}

同步调用:

ModuleCaller.getInstance().action("module2.jumpToPaymentActivity")
    .params(mContext, intent).call();

异步调用:

ModuleCaller.getInstance().action("module1.getValueAsync").callback(new ModuleCaller.Callback() { 
    @Override
    public void onCallSuccess(String action, Object result) {
        Log.d(TAG, "onCallSuccess, action=" + action + ", result=" + result);
    }

    @Override
    public void onCallFailed(String action, String message) {
        Log.d(TAG, "onCallFailed, action=" + action + ", message=" + message);
    }
}).call();

异步调用后回调:

ModuleCaller.getInstance().onCallSuccess( resultObj);

更多用法请参考demo

Github:https://github.com/ldw825/ModuleCaller

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。