我有一个简单的案例需要解决,但我还没有找到如何用RxJava实现它。一方面我有Retrofit(网络),另一方面我的SQLite数据库(缓存)。
我想要达到的目标是:
您是否知道如何使用Rxjava(版本1)实现此行为?
非常感谢!
答案 0 :(得分:1)
关于那个案子已经有很多文章了。仅举几例:
答案 1 :(得分:0)
这样的事情应该有效:
Observable<Foo> cache = getCacheFoo();
Observable<Foo> network = getNetworkFoo();
Observable<Foo> foos = cache.flatMap(cachedFoo -> {
if (cachedFoo == null) {
// if the cache returns nothing, return the network observable
return network;
} else if (cachedFoo.isStale()) {
// if the cache is stale, return the data, but follow up with the network
return Observable.just(cachedFoo).concatWith(network);
} else {
// otherwise the data is fresh, simply return it
return Observable.just(cachedFoo);
}
});