2015-10-14 55 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