Допустим, у вашего DAO есть этот метод, который обновляет записи пользователей в БД:
@Update
fun update(user: User): Single<Int>
Недавно я начал изучать RxJava и до сих пор видел множество примеров, таких как:
// Example 1
disposable.add(dao.updateUser(user)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe {
Log.d(TAG, "response received")
}
В приведенном выше примере я понимаю, что, как только подписка начнется, в рабочем потоке будет выполняться updateUser()
, и подписчик будет уведомлен и запущен в основном потоке после завершения выполнения.
Но что, если вас не интересует результат updateUser()
, и все, что вам нужно, это просто выполнить updateUser()
в рабочем потоке?
Пока я пытался сделать:
// Example 2
dao.updateUser(user)
или
// Example 3
dao.updateUser(user).subscribeOn(Schedulers.io())
Но они не работали. Кажется, что запросы на обновление никогда не выполняются, ничего не было зарегистрировано и записи не изменились. Я предполагаю, что это потому, что к нему не привязан ни один подписчик.
Пока я заставляю его работать, подключая случайного подписчика, который на самом деле не делает ничего подобного тому, который указан в Example 1
. Одна из проблем этого подхода заключается в том, что мне может понадобиться много раз выполнить этот запрос, что может создать много фиктивных подписчиков, не говоря уже о том, что код выглядит действительно плохо.
Не могли бы вы помочь мне найти лучший способ справиться с этим?