无需使用切换图(会创建新的实时数据)就可以在视图模型中观察实时数据吗?

时间:2019-11-28 11:05:11

标签: android kotlin android-jetpack android-viewmodel

是否可以在视图模型中观察实时数据而无需创建新的实时数据?据我了解,在视图模型中切勿观察,因为这会导致生命周期问题。因此,通常使用Transformations.switchMap(),但这会创建一个我必须分配的新实时数据。理想情况下,我想做这样的事情:

val liveData: LiveData<String>
liveData.switchMap {
    // Do stuff
}

liveData.observe {
    // Do stuff
}

2 个答案:

答案 0 :(得分:0)

您可以使用observeForever,但在这种情况下,您必须注意在清除viewmode时将其丢弃

答案 1 :(得分:0)

不完全是。之所以不应该在viewModel中观察某些内容,是因为它没有正确的生命周期。最好的方法是在视图中观察LiveData并使用MediatorLiveData在ViewModel中拦截数据,然后将处理后的数据直接发布到LiveData变量中。