java-订阅同一类中的不同事件总线

java-订阅同一类中的不同事件总线,第1张

概述我将GreenRobotEventBus3.0用作事件总线,并且我有2个发布者:privatestaticfinalEventBusEVENT_BUS=newEventBus();//PublisheventtotheeventbuspublicstaticvoidsendEvent(LoggingEventevent){LogPublisher.EVENT_BUS.post(event);}//Publisheven

我将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-订阅同一类中的不同事件总线所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1091415.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存