最佳答案
根据 LiveData 文档:
LiveData 类提供了以下优点:
...
始终更新数据: 如果生命周期再次启动(就像活动从回栈返回到已启动状态) ,它将接收最新的位置数据(如果还没有)。
但有时我并不需要这个功能。
例如,我在 ViewModel 中使用了 LiveData,在 Activity 中使用了 Observer:
//LiveData
val showDialogLiveData = MutableLiveData<String>()
//Activity
viewModel.showMessageLiveData.observe(this, android.arch.lifecycle.Observer { message ->
AlertDialog.Builder(this)
.setMessage(message)
.setPositiveButton("OK") { _, _ -> }
.show()
})
现在,每次旋转之后,旧的对话框就会出现。
有没有办法在处理后清除存储的值,或者根本就没有错误地使用 LiveData?