通知LiveData观察者,但不传递任何数据

时间:2019-05-20 08:17:38

标签: android kotlin android-livedata

在某些情况下,我有LiveData观察器来监视指示用户是否已登录的条件。只有在用户登录后,观察器才会得到通知。我不需要将任何数据传递给观察器。调用观察者时,仅表示用户已登录:

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

model.isSignedIn.observe(this, observer)

在我的视图模型中,我认为我应该如下更新观察者:

isSignedIn.setValue()

这是更新不需要任何数据的观察者的正确方法吗? LiveData实际上是关于通知观察者有关数据更改的信息。但是在我的示例中,我使用它来通知事件更改。这是一个微妙的差异,也许在这种情况下使用LiveData并不是最好的方法。

1 个答案:

答案 0 :(得分:0)

在这种情况下,您可以使用LiveData,它没有任何限制,特别是如果您要了解生命周期。 如果您希望在这种情况下拥有更清晰的API,则可以使用扩展功能机制。而且,根据您的情况,建议对实时数据变量使用单位类型。

typealias NoValueLiveData = MutableLiveData<Unit>

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