2017-07-27 4 views
0

私は、AndroidルームのSQLクエリを持って、その戻りの流動性とcompletableします完了することができます。 それは私がしようとするものです。チェーンの流動性は、アクション

Exercices e = mDatabase.exerciseDao().getExercicesById(id).blockingFirst(); 
    e.setIs_used(0); 
    return Completable.fromAction(() -> mDatabase.exerciseDao().addExercise(e)); 

をしかし、tは正常に動作しません:

@Override 
public Completable setExerciseUsed(int id) { 
    return mDatabase.exerciseDao().getExercicesById(id) 
      .doOnNext(exercise -> exercise.setIs_used(1)) 
      .flatMapCompletable(exercise -> 
        Completable.fromAction(() -> mFitnessDatabase.exerciseDao().addExercise(exercise))); 
} 

また、私は試してみました。流動性のように多くの要素を放出し、購読の後でサイクルに固執するようです。

答えて

0

私は、フローラブルや、それらのソースからの脱退方法についてよく分かりませんが、LiveDataの使用について考えましたか?単にソースをLiveDataオブジェクトに追加し、ソースへの接続を削除し、オブジェクトを変更して、ループに入ることなくメソッドを実行することができます。

もう1つの考え方は、オブジェクトを取得し、接続を維持し、その値を更新しないことです。 LiveDataでデータベース接続を維持しているため、オブザーバはonChangedを再度実行します(source =データベースが変更されているため)。このメソッドが、データベースが新しいオブジェクト値をアップロードするまで、例えば、null(setValue経由)を返すことだけを確認する必要があります。

流動性を維持したい場合は、アプリケーションが整数をオブジェクトに再適用してデータベースに送るのを防ぐ条件を追加することを検討してください。それはあなたに理にかなっていますか?

関連する問題