私はAndroidプロジェクトで初めてrxjava2を使用しており、バックグラウンドスレッドでSQLクエリを実行しています。rxjava2を使用して単一のデータベース行を照会
しかし、単純なSQLクエリを実行し、レコードが存在する場合と存在しない場合を処理する最良の方法を考え出すのに問題があります。私が使用しているコードは次のとおりです。
public Observable<Record> createRecordObservable(int id) {
Callable<Record> callback = new Callable<Record>() {
@Override
public Record call() throws Exception {
// do the actual sql stuff, e.g.
// select * from Record where id = ?
return record;
}
};
return Observable.fromCallable(callback).subscribeOn(Schedulers.computation());
}
レコードが存在する場合はうまく動作します。しかし、idと一致するレコードが存在しない場合は、エラーのように扱います。明らかにこれは、rxjava2がCallableにnullを返すことを許可していないためです。
明らかに私はこれを本当に望んでいません。エラーは、データベースが失敗した場合や、何かが空である場合にのみ有効です。空の結果は完全に有効です。私はどこかで、可能な解決策の1つがJava 8でレコードをラップしていることを読んでいます。オプションですが、私のプロジェクトはJava 8ではありません。
これは確かに、私は確かにシンプルで簡単な解決策でなければならないと確信しているような一般的な、日常的な作業ですが、これまでのところ見つけられませんでした。ここで使用する推奨パターンは何ですか?