Я использую LiveData для отображения количества записей в таблице в комнате. Я вызываю функцию, которая получает этот счетчик, и после его получения вызывается наблюдатель, который отображает счет. Это работает как ожидалось. Но у меня также есть запущенная служба, которая извлекает данные из серверной части и сохраняет их в той же таблице, из которой я считываю счетчик. Но всякий раз, когда данные сохраняются, наблюдаемое вызывается каждый раз, и отображаемое количество обновляется. Я не уверен, почему это происходит. Я действительно хочу, чтобы это произошло. Я просто не понимаю, почему это происходит. Когда я запускаю свой код для получения счетчика, это делается с помощью RxJava. Поэтому, когда вызов завершается, я не вижу причин, по которым наблюдаемое количество будет обновляться с каждым хранилищем данных. Единственная возможная причина в том, что Room отслеживает мой запрос на счетчик и выполняет его всякий раз, когда сохраняются данные. Это возможно? Вот мой код для получения счета:
Замечено в моем фрагменте:
viewModel.onConnectionsCountRetrieved.observe(this, Observer { count ->
var title = getString(R.string.connections)
if (count > 0)
title += " (" + "%,d".format(count) + ")"
(activity as MainActivity).getSupportActionBar()?.title = title
})
На мой взгляд модель:
val onConnectionsCountRetrieved: MutableLiveData<Int> = MutableLiveData()
@SuppressLint("CheckResult")
fun getConnectionsCount() {
val disposable = connectionsBO.getConnectionsCount()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
{ count -> onConnectionsCountRetrieved.postValue(count) },
{ ex -> App.context.displayErrorMessage(R.string.problem_retrieving_total_connection_count) }
)
disposables.add(disposable)
}