如何在多模块动态功能应用程序中进行通信 从主应用模块到动态功能模块的通信从动态特征模块到主模块的通信

问题描述

我有类似的项目结构

应用:

即时应用:

图书馆:

动态特征1:

动态特征2:

动态特征3:

现在动态特征1和动态特征2之间有一些依赖关系。现在,如果我将其添加为 dynamic-feature2 build.gradle 中的依赖项,则会导致循环依赖项。 以上只是一个例子,还有很多其他情况。如何正确处理这种依赖冲突或有什么建议?

解决方法

从主应用模块到动态功能模块的通信

您可以通过 Java 中的反射来做到这一点。确保您的类和方法名称未在动态模块中混淆。

从模块中获取片段/活动或其他类:

Class class = Class.forName("your.dynamic.module.package.name.classname");

从你的类中获取一个方法:

Method method = class.getMethod("GenerateQuestion");

调用方法:

method.invoke(objectYouWantToInvokeTheMethodOn);

从动态特征模块到主模块的通信

要获取动态功能模块片段的父活动,您可以执行以下操作:

@Override
public void onAttach(Context context) {
    super.onAttach(context);
    activity = (Activity) context;
}

然后你可以在那个活动上调用一个方法。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...