首页 > 解决方案 > 在 javaRx 2.0 中创建事件总线

问题描述

如标题所示,我正在尝试创建事件总线以在片段之间共享多个事件。我正在使用 JavaRx 2 和 Dagger 2 进行注入。这就是我想要实现的目标: 非常有趣的实现

这就是我的事件总线的样子:

    @MainScope
public class EventBus {

    @Inject
    public EventBus(){

    }

    private PublishSubject<Object> busSubject = PublishSubject.create();

    public <T> Observable<T> register (Class<T> eventClass){

        return busSubject
                .filter(event -> event.getClass().equals(eventClass))
                .map(obj -> (T) obj);
    }


    public PublishSubject<Object> getBusSubject() {
        return busSubject;
    }

    public void post(Object event){
        busSubject.onNext(event);
    }
}

然后在 mainPresenter 我发布这样的简单类:

eventBus.post(id);

在我注入相同事件总线实例的片段之一中,我订阅了事件:

Observer<IdEvent> observer = eventBus.register(IdEvent.class).observeOn(schedulersFacade.io()).subscribeOn(schedulersFacade.ui()).subscribeWith(new Observer<IdEvent>() {
            @Override
            public void onSubscribe(Disposable d) {
                System.out.println( );
            }

            @Override
            public void onNext(IdEvent idEvent) {
                id = idEvent.getParsedId();
            }

            @Override
            public void onError(Throwable e) {
                System.out.println( );
            }

            @Override
            public void onComplete() {
                System.out.println( );
            }
        });

在调试时,我看到 post 方法被称为 onSubscribe 观察者方法。问题是永远不会调用 onNext 方法。我是 JavaRx 的新手,我无法解决我的问题,所以我将不胜感激任何建议。

标签: androidrx-android

解决方案


推荐阅读