我正在尝试在我的
Completeable
的构造函数中使用
ViewModel
在后台线程上将一些数据插入本地数据库
public MainViewModel() extends ViewModel {
public MainViewModel(){
localRepository.insertValueIntoDatabase().subscribeOn(Schedulers.io())
.subscribe(() -> {
sharedPrefManager.setAnotherValue(true);
}, throwable -> {
Timber.e(throwable, "Failed to insert into DB");
});
}
}
在我的
MainActivity
中,我也在构建MainViewModel
之后调用一个方法,该方法将根据构造函数中插入的值执行查询。
viewModel = new ViewModelProvider(this).get(MainViewModel.class);
viewModel.performQueryWithValue();
public MainViewModel() extends ViewModel {
public MainViewModel(){
localRepository.insertValueIntoDatabase().subscribeOn(Schedulers.io())
.subscribe(() -> {
sharedPrefManager.setAnotherValue(true);
}, throwable -> {
Timber.e(throwable, "Failed to insert into DB");
});
}
public void performQueryWithValue(){
localRepository.getValueFromDatabase().flatMapSingle(value -> {
if(value == 0){
return remoteRepository.performQueryOne();
}else{
return remoteRepositoru.performQueryTwo();
}
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(result-> {
}, err -> {
});
}
}
如果
localRepository.insertValueIntoDatabase()
需要10秒才能插入,
如何让
performQueryWithValue()
方法在执行查询之前等待插入完成?