Бесконечный цикл при обновлении в room с использованием rxJava
Все я заккоментил, чтобы найти источник зла.
model.updateFavorite(it) он входит в бесконечный цикл.
Его код
fun updateFavorite(pokemon: PokemonEntity){
Log.d("RefreshFavorite", pokemon.isFavorite.toString())
pokemonsDao.update(pokemon)
}
Какой метод он вызывает из Dao(room)
@Insert(onConflict = REPLACE)
fun update(pokemon: PokemonEntity)
Я думаю про room лишнее, скорее всего я что-то не понимаю и сделал такую глупую ошибку, но я её не вижу.
Проблема в том, что при вызове этого метода по обновлению данных, он начинает впадать в бесконечность. И все что далее .map и .subscribe они тоже выполняются бесконечно.
Как мне решить эту проблему?
И да. Если заменить flatMap на map, ничего не изменится (проблема именно с updateFavorite, model.getCardInfo(id) отрабатывает 1 раз нормально)
Ответы (1 шт):
Судя по поведению у вас метод getCardInfo типом возвращаемого значения имеет Flowable или Observable. В таком случае вам будут приходить события каждый раз, когда меняется что-то в таблице, что вы и наблюдаете.
Чтобы это исправить - смените тип источника данных возвращаемого из метода getCardInfo на Single - он один раз получит данные и сразу завершится.
