我将GreenRobot Event Bus 3.0用作事件总线,并且我有2个发布者:
private static final EventBus EVENT_BUS = new EventBus();//Publish event to the event buspublic static voID sendEvent(LoggingEvent event){ LogPublisher.EVENT_BUS.post(event);}//Publish event to the event buspublic 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对象吗?
解决方法:
由于事件类的继承,两个订阅者都在调用.但是您可以在EventBus本身中关闭此eventinheritance功能.通过使用此方法:
EventBus BUS = EventBus.builder().eventinheritance(false).installDefaultEventBus();
总结 以上是内存溢出为你收集整理的java-订阅同一类中的不同事件总线全部内容,希望文章能够帮你解决java-订阅同一类中的不同事件总线所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)