[英]Use rx java to load reference data but blocking if necessary
我正在尝试实现在我的应用程序的数据库中存储参考数据的解决方案。
数据最初存储为JSON文件,每次启动时我都需要从服务器进行同步。 我有烘焙到应用程序中的文件的本地副本。 每次启动时,我必须检查版本的共享首选项。 如果不存在,我认为它是第一个启动。 所以我需要读入文件,将文件写入数据库,并在完成时启动。 第一个屏幕期望此数据位于数据库中,因此在此过程完成之前,在这种情况下,我不会显示该屏幕的UI。
但是在将来,同步这些文件的网络调用可能会异步发生,因此,只要我看到共享的首选项具有版本号,然后完全异步更新,就会希望在我的可观察对象上启动完成
我如何设置一个流来表示这一点。 我认为流类型可能是空的,我会触发onCompleted / error,因为订户不关心数据,只关心处理完成了什么
您可以执行以下操作:
updateChecker.hasUpdates()
.flatMap(hasUpdates -> {
if (hasUpdates) {
return dataUpdater.update();
}
return Observable.just(false);
})
假如说
class UpdateChecker {
public Observable<Boolean> hasUpdates() {
return Observable.just(true); // Replace by API call
}
}
class DataUpdater {
public Observable<Boolean> update() {
// update the database here
return Observable.just(true);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.