我有两个侦听器,它们将事件发布到eventbus时将接受相同的参数,但是即使接受相同的参数,这些侦听器的行为也有所不同。
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);
我的问题是,将事件发布到eventbus中时如何触发特定的侦听器,否则它将同时调用这两个侦听器?
最佳答案
一些简单的解决方案:
@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);