1
私はRxJava2で新しいAndroid永続ライブラリlibを使用しています。次のコードは、無限ループを引き起こしています。 2番目のオブザーバブルでユーザーを更新する行をコメントアウトすると、正常に動作します。私がそこに放置すると、最初のオブザーバブルのonNextメソッドが繰り返し呼び出されます。ルーム+無限ループのRxJava2ケース
ルームは、エンティティが更新されたときにテーブルを再クエリしますか?もしそうなら、なぜ同じストリームにメッセージを再び公開するのですか?これは意図された動作ですか?それは図書館のバグですか?
あなたがuserDao.getAll()イベントに加入するとval userDao = HeyHeyApp.database.userDao();
userDao.getAll()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe({ listOfUsers ->
if (!listOfUsers.isEmpty()) {
HeyHeyApp.currentUser = listOfUsers.first()
HeyHeyApp.currentUser.fcmDeviceId = getDeviceId()
Single.fromCallable({
HeyHeyApp.database.userDao()
.updateUser(HeyHeyApp.currentUser)
}).subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe({ _ ->
})
}
})
ありがとうございます!私はそれを購読する前にtake(1)を呼び出すことによって動作させることができました! –