我有两个侦听器,它们将事件发布到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);

08-28 17:54