1
我在努力研究如何從數據層向視圖層提出網絡錯誤。在Retrofit + RxJava2 +房間處理網絡錯誤
我正在使用Room以及RxJava2和Retrofit2。我以本地優先的方式實現存儲庫模式,所以我查詢本地數據,同時從遠程獲取數據,並在必要時更新本地數據。在代碼中,這將是:
public Flowable<List<DEvent>> getAll() {
return db.dEventDataStore().getAll()
.doOnSubscribe(new Consumer<Subscription>() {
@Override
public void accept(final Subscription subscription) throws Exception {
dEventApi.getAll().subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
.subscribe(new MaybeObserver<List<DEvent>>() {
@Override
public void onSubscribe(@NonNull Disposable disposable) {
Timber.d("Remote onSubscribe");
}
@Override
public void onSuccess(@NonNull List<DEvent> dEvents) {
Timber.d("Remote onSuccess!");
db.dEventDataStore().insertAll(dEvents);
}
@Override
public void onError(@NonNull Throwable throwable) {
Timber.d("Remote onError!");
}
@Override
public void onComplete() {
Timber.d("Remote onComplete!");
}
}
);
}
});
}
並在視圖層:
mDisposable.add(repo.getAll()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<List<DEvent>>() {
@Override
public void accept(List<DEvent> dEvents) throws Exception {
Timber.d("OnNext!!");
mView.showEvents(dEvents);
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
Timber.e("Error on getting DEvents - " + Log.getStackTraceString(throwable));
}
}));
我怎麼能發射出拋出?
謝謝!按預期工作,使xxxAPIDataSource(翻新)返回Flowable – webo80