android - Android 上的 EventBus : how to implement dynamic queues vs. 基于类的事件订阅?

标签 android publish-subscribe event-bus greenrobot-eventbus

我想使用 EventBus(通过 Greenrobot 或任何其他工具)在我的 Android 应用程序的组件之间进行通信。

在所有示例中,发布/订阅都是使用“类”作为“主题”实现的,即每个订阅者声明它应该接收的事件的确切类。

不知道有没有更动态的机制

这是我需要完成的:我的应用程序需要向多个系统发送命令(例如,“Hello!”):1、2、... N。所有这些系统的命令结构都是相同的.

因此,发布者能够将“command/1”、“command/2”、...”、“command/N”发送到队列是有意义的 - 但要求没有意义每个系统定义一个“CommandN”类。

有什么聪明的方法可以做到这一点,同时保持发布/订阅解耦?

提前致谢

最大

最佳答案

我推荐的一种简单方法是在事件类中添加变量作为命令。

每个订阅者都会收到事件,但只有在命令号与其要求相同时才做某事。

这里是 EventBus 的示例代码:

public class CommandEvent{
  private int command;

  public CommandEvent(int command) {
    this.command = command;
  }

  public int getCommand() {
    return command;
  }
}

然后在你的每个订阅者中:

@Subscribe
protected void onMessage(CommandEvent event) {
  // Only do something when it's its command it want.
  if(event.getCommand() = myCommandId) {
    // do something here.
  }
}

关于android - Android 上的 EventBus : how to implement dynamic queues vs. 基于类的事件订阅?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38183848/

相关文章:

node.js - 为什么我的代码每次运行我的 node.js 应用程序时都会打印不合逻辑的模式?

java - 为什么我的订阅者无法在 jms 上读取发布者的消息

javascript - 带有组合 API 的 Vue 3 事件总线

java - EventBus 和 Swing JFrame 垃圾收集?

android - 如何在微调器 OnItemClick 事件中获取键和值

android - 同一 xml 中的选择器、图层列表和形状/位图

android - 更改安卓 :installLocation from preferExternal to internalOnly

Android SDK 管理器不会下载包

javascript - React mixin 用于向组件添加多个订阅

java - vertx-x3 集群多个顶点