我需要在用户启动应用程序时显示来自我的数据库的数据(它们立即可用),然后,我需要在网络可用时立即将它们替换为来自网络的数据。
我试过这样做:
mDisposable = mRepository.getHighlights(forceReload)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribeWith(new DisposableObserver<PaginatedData<List<Article>>>() {
@Override
public void onNext(PaginatedData<List<Article>> articles) {
mView.updateData(articles.getData(), articles.isFirstPage(), articles.isLastPage());
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});
getHighlights()方法:
return Observable.concat(getHighlightsFromDataBase(), getHighlightsFromNetwork()).map(new Function<List<ArticleResponse>, PaginatedData<List<ArticleResponse>>>() {
@Override
public PaginatedData<List<ArticleResponse>> apply(@NonNull List<ArticleResponse> articleResponses) throws Exception {
// ...
}
});
问题是当getHighlightsFromDataBase()和getHighlightsFromNetwork()完成时,它只调用“apply()”(在“map”方法中)。
所以没有这个订单:
getHighlightsFromDataBase()
getHighlightsFromNetwork()
map()
onNext()
map()
onNext()
我需要:
getHighlightsFromDataBase()
map()
onNext()
getHighlightsFromNetwork()
map()
onNext()
我正在谈论的“onNext”是调用getHighlights(); 的方法的onNext(这样我每次获得新数据时都可以更新视图)。
我能做些什么来实现这个目标?
谢谢!
答案 0 :(得分:0)
这样的东西?
getHighlightsFromDataBase().map().doOnNext() {
getHighlightsFromNetwork().map().onNext()
}