在许多样本中,我看到:

 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/

10-10 05:01