android - lib模块和主模块之间如何通信

标签 android

构造

我有 2 个模块:

  • app(应用程序)
  • box(库模块)

问题

我正在尝试使用 box 模块中的部分 app 模块。 问题是 app 模块依赖于 box 模块,因此我不能指向 box 模块,因为那样会产生循环依赖。

如何从 box 模块获取 app 模块方法?

或者

如何通知app模块中的一些接收者有一些数据要获取?

编辑

我以第三个模块 common 结束,它包含模块 appbox 的交集。

最佳答案

您不能直接调用依赖于您的库的模块。这种依赖会破坏图书馆的目的。但是您可以在 Box 模块中定义一个接口(interface),该库的客户端必须实现该接口(interface)才能正常运行。

例子: 在您的 Box 模块中定义一个接口(interface)

interface ThereIsSomeDataToGet(){
   void doSomething();
}

在你的应用模块中,你可以调用

Box.registerCallback(new ThereIsSomeDataToGet(){...})

现在在 box 模块中你有一个回调到你的应用程序模块,没有任何硬依赖,当库有一些新数据时,你只需要调用

ThereIsSomeDataToGet.doSomething();

关于android - lib模块和主模块之间如何通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32438751/

相关文章:

android - 如何在 android 中更改 surfaceview 的 z 顺序运行时

android - 如何将 BuildConfig 值传递给依赖模块?

android - 引用真北计算加速度

android - 媒体播放器和 seekTo 的奇怪行为

java - 如何向 Android 输入法编辑器应用程序添加简单的首选项屏幕

android服务在后台运行

java - Android 向某个方向移动位图

java - AudioTrack WRITE_BLOCKING 与 WRITE_NON_BLOCKING

android - Android 中从左向右滑动手势的问题

java - 如何从 oncreate 方法 android 内部调用同一个类中的方法?