我想使用 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/