外观
为什么在 MVVM 中推荐使用 MutableLiveData 而非 LiveData?
标准回答
这题的前提不准确:通常是内部用 MutableLiveData 修改,对外暴露只读的 LiveData。
通俗例子
ViewModel 可以更新加载状态,但 Activity 只负责观察,不能随意把状态改成成功。这样修改入口清晰,错误更容易定位。
深入解释
**为什么暴露只读视图:**ViewModel 内部用 MutableLiveData 修改值,对外用 LiveData 类型提供观察接口,减少页面越过业务逻辑随意改状态的机会。
**它有没有复制一份数据:**通常对外引用的还是同一份数据对象,只是声明类型限制可调用的方法。这里主要是 API 边界,不是深拷贝,也不是防恶意调用的安全隔离。
内容来源
- Android · AI Agent 知识手册 · 原条目
10.1.3