2016-07-28 56 views
0

我试图使用RxJava为我的模型创建代理,此代理让其他订阅模型中的更改。发布主题在订阅0123时出现在下一个订阅

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

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只有一个实例,但它可能会随时间而改变,所以我希望能够为这些更新注册。
如果我在调用主题的onNext之前在observe方法返回的Observable上注册,则此代码运行良好。

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

我想过延长PublishSubject但它是决赛,所以我想过写我自己的版本(主要是通过复制什么在PublishSubject并添加什么,我需要),但后来我发现,SubjectSubscriptionManager有包可见所以这是一个死胡同也是。

任何想法如何添加这个需要的功能?
谢谢。

回答

1

还有BehaviorSubject,这不正是你想要什么:发出最新的和未来的所有项目为其用户

+0

权。感谢那! –