2015-10-14 117 views
0

在我的應用程序中,我有一個活動,其中Observable訂閱了一些新數據。 此Observable來自活動的控制器。將Observable複製到現有的可觀察對象中

控制器負責提取一些數據並通過此Observable將其提供給活動。

當控制器被要求獲取某些數據時,它首先獲取數據庫中的數據,將數據庫中的數據提供給Activity,然後執行Retrofit請求以獲取一些更新的數據並將此新數據提供給Activity。

數據的來源對活動應該是透明的,使用單個Observable。因此,無論何時Controller從數據庫或Retrofit中獲取一些數據,他都應該「向」活動Obervable「提供」所有新數據。

如何將Observable值複製到另一個已存在的Observable中?

謝謝

回答

1

連接兩個觀察者呢?

public class DataController { 

    public Observable<Item> fetchData() { 

     Observable<Item> fromCache = // creates the observable reading from cache 
     Observable<Item> fromNetwork = //creates the observable reading from network 

     return Observable.concat(fromCache, fromNetwork); 
    } 
} 
+0

如果出於未知原因網絡應答比緩存更快,該怎麼辦?我會嘗試你的解決方案:) – pdegand59

+0

我不是一個RxJava大師,但AFAIK concat不會交錯事件。因此,您將在緩存observable完成後從網絡接收事件。見圖:http://rxmarbles.com/#concat – rciovati

+0

所以concat()的參數順序實際上很重要。真棒。這就是我一直在尋找的!謝謝。順便了解運營商的非常好的網站。 – pdegand59