我将GreenRobot Event Bus 3.0
用作事件总线,我有 2 个发布者:
private static final EventBus EVENT_BUS = new EventBus();
//Publish event to the event bus
public static void sendEvent(LoggingEvent event){
LogPublisher.EVENT_BUS.post(event);
}
//Publish event to the event bus
public static void sendEvent(OtherLoggingEvent event){
LogPublisher.EVENT_BUS.post(event);
}
我有 2 个订阅者:
@Subscribe(threadMode = ThreadMode.ASYNC)
public void onEvent(LoggingEvent event){
logEvent( event);
}
@Subscribe(threadMode = ThreadMode.ASYNC)
public void onEvent(OtherLoggingEvent event){
logEvent( event);
}
问题是当拨打电话时:
MyPublisher.sendEvent(new OtherLoggingEvent(varA, varB, varC));
两个订阅者都被调用,我不知道为什么。我认为这可能与它OtherLoggingEvent
是 的子类有关LoggingEvent
,但我不确定。然后我的问题变成了我如何与发布者和订阅者保持一对一的关系。我想打电话:
MyPublisher.sendEvent(new OtherLoggingEvent(varA, varB, varC));
并打电话给订户public void onEvent(OtherLoggingEvent event)
,当我打电话时:
MyPublisher.sendEvent(new LoggingEvent(varD, varE, varF));
订户:
public void onEvent(LoggingEvent event)
会叫?这会按原样工作,但必须确保这些类是唯一的,而不是彼此的子类?我必须创建一个新EventBus
对象吗?