【发布时间】:2025-12-18 00:55:02
【问题描述】:
我写了一个下面的类来访问我的 repo,它包括远程 repo 和本地 repo。
public class VenuesRepoImpl implements VenuesRepo {
private VenuesLocalRepo venuesLocalRepo;
private VenuesRemoteRepo venuesRemoteRepo;
public VenuesRepoImpl(VenuesLocalRepo venuesLocalRepo, VenuesRemoteRepo venuesRemoteRepo) {
this.venuesLocalRepo = venuesLocalRepo;
this.venuesRemoteRepo = venuesRemoteRepo;
}
@Override
public Observable<List<Venue>> getAllVenues(String ll, int offset) {
return Observable.merge(venuesRemoteRepo.getAllVenues(ll, offset)
.doOnNext(venues -> venuesLocalRepo.addVenues(venues)).subscribeOn(Schedulers.io()),
venuesLocalRepo.getAllVenues().subscribeOn(Schedulers.io()));
}
@Override
public void deleteAllVenues() {
Completable.fromAction(() -> venuesLocalRepo.deleteAll()).subscribeOn(Schedulers.io());
}
}
但是Observable.merge 复制了我的项目,它同时具有 api 和 db 项目。 api不可用时如何访问数据库项?
【问题讨论】:
-
不直接回答你的问题,但如果你声明你的数据库作为你的单一事实来源,你就不必处理这个问题,你会一直显示数据库数据并根据需要更新它来自 api 的数据
标签: android rx-java android-room rx-android