我将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的子类这一事实有关,但我不确定.然后,我的问题变成了如何与发布者和订阅者保持1-1关系.我想打电话给:
MyPublisher.sendEvent(new OtherLoggingEvent(varA, varB, varC));
并在我致电时调用了订户public void onEvent(OtherLoggingEvent事件),并且:
MyPublisher.sendEvent(new LoggingEvent(varD, varE, varF));
订户:
public void onEvent(LoggingEvent event)
将被称为?这样是否可以正常工作,但必须确保这些类是唯一的,而不是彼此的子类?我必须创建一个新的EventBus对象吗?