Уведомление наблюдателей LiveData, но без передачи им каких-либо данных - PullRequest
0 голосов
/ 20 мая 2019

У меня есть случай, когда у меня есть LiveData наблюдатель, который отслеживает состояние, которое указывает, вошел ли пользователь в систему. Наблюдатель будет получать уведомление только тогда, когда пользователь вошел в систему. Мне не нужно передавать какие-либо данные наблюдателю , Когда вызывается наблюдатель, это просто означает, что пользователь вошел в систему:

val observer = Observer<String> { signedIn ->
  // The user is signed in. Do something...
}

model.isSignedIn.observe(this, observer)

В моей модели представления я полагаю, что должен обновить наблюдателя следующим образом:

isSignedIn.setValue()

Является ли это правильным способом обновления наблюдателя, для которого не требуются отправленные ему данные? LiveData на самом деле об уведомлении наблюдателей об изменениях данных. Но в моем примере я использую его для уведомления об изменении события. Это небольшая разница, и, возможно, использование LiveData для этого случая - не лучший способ сделать это.

1 Ответ

0 голосов
/ 20 мая 2019

В этом случае вы можете использовать LiveData, он не имеет ограничений, особенно если вы хотите знать жизненный цикл.Если вы хотите иметь более понятный API для этого случая, вы можете использовать механизм функции расширения.И в вашем случае, предложите использовать тип блока для переменных данных в реальном времени.

typealias NoValueLiveData = MutableLiveData<Unit>

fun NoValueLiveData.setValue() {
    this.value = Unit
}
...