PublishSubject在订阅时触发onNext

时间:2016-07-28 10:22:01

标签: java rx-java

我正在尝试使用RxJava为我的模型创建代理,此代理允许其他人订阅模型中的更改。

这是我的代理的简化版本:

class MyModelProxy {
    private static MyModelProxy instance;

    private MyModel model;
    private PublishSubject<MyModel> subject;

    private MyModelProxy() {
        this.model = // load from cache
        this.subject = PublishSubject.create();
    }

    public static Observable<MyModel> observe() {
        if (instance == null) {
            instance = new MyModelProxy();
        }

        return instance.subject;
    }

    private void modelUpdated() {
        this.subject.onNext(this.model);
    }
}

系统中只有MyModel的一个实例,但它可能会随着时间而改变,因此我希望能够注册这些更新。
如果我在调用主题的Observable之前注册observe方法返回的onNext,则此代码效果很好。

我想要的行为是,当在此观察者上调用subscribe方法时,MyModel的当前实例将被发送给刚刚订阅的订阅者。

我考虑过扩展PublishSubject,但它是最终的,所以我考虑编写我自己的版本(主要是通过复制PublishSubject中的内容并添加我需要的内容)然后我发现了SubjectSubscriptionManager具有包可见性,因此也是一个死胡同。

如何添加所需功能的任何想法?
感谢。

1 个答案:

答案 0 :(得分:1)

还有BehaviorSubject,它可以完全符合您的要求:向其订阅者发送最新和所有未来项目