如何在 google 番石榴事件总线中处理具有相同参数的多个侦听器
How to handle multiple listeners with same argument in google guava eventbus
我有两个监听器在将事件发布到 eventbus.But 时将接受相同的参数,即使接受相同的参数这些监听器的行为不同。
public class EventListener1 {
@Subscribe
public void executeJob(jobVO jobVO ) {
//logic goes here
}
}
public class EventListener2 {
@Subscribe
public void cancelJob(jobVO jobVO ) {
//logic goes here but different
}
}
EventBus eventBus = new EventBus();
eventBus.register(new EventListener1());
eventBus.register(new EventListener2());
用户按下执行按钮并希望触发 EventListener1
取消作业。
执行作业
JobVO j=new JobVO();
j.setAction("executeJob");
etc...
eventBus.post(j);
取消作业
JobVO j=new JobVO();
j.setAction("cancelJob");
etc...
eventBus.post(j);
我的问题是,在将事件发布到事件总线时如何触发特定的监听器,或者它会同时调用两个监听器?
一些简单的解决方案:
@Subscribe
public void executeJob(jobVO jobVO ) {
if (!jobVO.getAction().equals("executeJob")) {
return;
}
//logic goes here
}
...或者,不要使用 EventBus:
JobVO j=new JobVO();
j.setAction("executeJob");
etc...
eventListenerForExecuting.executeJob(j);
我有两个监听器在将事件发布到 eventbus.But 时将接受相同的参数,即使接受相同的参数这些监听器的行为不同。
public class EventListener1 {
@Subscribe
public void executeJob(jobVO jobVO ) {
//logic goes here
}
}
public class EventListener2 {
@Subscribe
public void cancelJob(jobVO jobVO ) {
//logic goes here but different
}
}
EventBus eventBus = new EventBus();
eventBus.register(new EventListener1());
eventBus.register(new EventListener2());
用户按下执行按钮并希望触发 EventListener1
取消作业。
执行作业
JobVO j=new JobVO();
j.setAction("executeJob");
etc...
eventBus.post(j);
取消作业
JobVO j=new JobVO();
j.setAction("cancelJob");
etc...
eventBus.post(j);
我的问题是,在将事件发布到事件总线时如何触发特定的监听器,或者它会同时调用两个监听器?
一些简单的解决方案:
@Subscribe
public void executeJob(jobVO jobVO ) {
if (!jobVO.getAction().equals("executeJob")) {
return;
}
//logic goes here
}
...或者,不要使用 EventBus:
JobVO j=new JobVO();
j.setAction("executeJob");
etc...
eventListenerForExecuting.executeJob(j);