3 回答

TA貢獻1859條經驗 獲得超6個贊
創建一個 Observable 并在其中編寫您的邏輯。您可以訂閱可觀察對象并獲取布爾值。
public Observable<Boolean> insertObject(Measurements m) {
return Observable.create(new ObservableOnSubscribe<Boolean>() {
@Override
public void subscribe(ObservableEmitter<Boolean> e) {
appDb.measurementDAO().insertMeasurements(m);
e.onNext(true);
e.onComplete();
}
}).subscribeOn(Schedulers.io());
}

TA貢獻1865條經驗 獲得超7個贊
我知道你有答案,但你永遠不知道這是否失敗。我確定您的 dao 插入方法可以返回一個long[](插入行的 ID)。
你可以輕松地做到:
Completable.fromCallable(() ->
appDb.measurementDAO().insertMeasurements(m).length != 0 ?
Completable.complete() :
Completable.error(new IllegalStateException("Error inserting " + m.toString())))
.subscribeOn(Schedulers.io())
.subscribe(() -> { }, Throwable::printStackTrace);

TA貢獻1847條經驗 獲得超11個贊
我找到了我丟失的部分:
Completable.fromAction(() -> appDb.measurementDAO().insertMeasurements(m)) .subscribeOn(Schedulers.io()) .subscribe();
添加回答
舉報