2016-07-28 54 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

權。感謝那! –