即使观察者活动被破坏,MutableLiveData 也会保留旧值

Nee*_*and 7 android android-mvvm android-livedata mutablelivedata

我有一项活动正在观察存储库中的实时数据。现在,当活动被销毁然后再次创建时,我仍然从存储库中获取旧值,除非我手动获取新值。

为什么即使观察者活动被销毁,可变的实时数据仍保留其旧值?

Luk*_*kas 2

您可以减少 ViewModel 的生命周期,在这种情况下,新创建的 ViewModel 将不会保留以前的数据。

或者,您可以在活动内部手动调用

override fun onDestroy(){
    super.onDestroy()
    viewModel.clear()
}
Run Code Online (Sandbox Code Playgroud)

内部视图模型:

fun clear(){ myLiveData.value = defaultValue /*or null*/ }
Run Code Online (Sandbox Code Playgroud)

或使用 LiveEvent 更改 MutableLiveData
https://proandroiddev.com/livedata-with-single-events-2395dea972a8