我正在尝试使用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
具有包可见性,因此也是一个死胡同。
如何添加所需功能的任何想法?
感谢。
答案 0 :(得分:1)
还有BehaviorSubject
,它可以完全符合您的要求:向其订阅者发送最新和所有未来项目