在许多样本中,我看到:
class DataViewModel{
val data:LivaData<Int>
get() = _data
private val _data = MutableLiveData<Int>()
}
但更简单的看起来像这样:
class DataViewModel{
val data = MutableLiveData<Int>()
}
那么,为什么需要使用 2 个字段进行更复杂的代码构造?
最佳答案
这是一种旨在限制从类外部修改值的实践。LiveData
是只读的。MutableLiveData
,顾名思义,允许改变它所持有的值。
如果您直接公开 MutableLiveData
,就像在您的第二个示例中一样,任何可以访问该 data
字段的代码也可以修改它所持有的值。
公开从 data
类外部更改 DataViewModel
内容的能力可能会使调试和推理 data
内容在任何给定时间的来源变得更加困难。
关于android - 为什么 LiveData 比 MutableLiveData 好?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54600660/