8
据LiveData documentation:如何清除LiveData存储值?
的LiveData类提供了以下优点:
...
总是最新数据:如果一个生命周期再次启动(就像一个活动要回从后台堆栈启动状态),它会收到最新的位置数据(如果它尚未)。
但有时候我不需要这个功能。
例如,我在下面的活动中LiveData视图模型和观察报:
//LiveData
val showDialogLiveData = MutableLiveData<String>()
//Activity
viewModel.showMessageLiveData.observe(this, android.arch.lifecycle.Observer { message ->
AlertDialog.Builder(this)
.setMessage(message)
.setPositiveButton("OK") { _, _ -> }
.show()
})
现在每次旋转后会出现老对话框。
有没有办法清除处理后的存储值,或者它是否错误地使用了LiveData?
这是关系到:https://stackoverflow.com/questions/44146081/show-dialog-from-viewmodel-in-android-mvvm-architecture –
是否涉及到实时数据的问题?无论您是否使用LiveData,每次旋转时都会重新创建活动。即使您将其删除,问题仍将继续存在。 –
@LongRanger它可以通过在显示的对话框中删除在LiveData中缓存的消息来解决,所以新的活动将不会收到它。在Moxy的[OneExecutionStateStrategy](https://github.com/Arello-Mobile/Moxy/wiki/View-commands-state-strategy#existing-strategies)上使用的原则相同 – Kamer358