MutableLiveData的作用
LiveData 设计之初应该是为了 view 和 viewmodel 之间的通信,MutableLiveData是LiveData 的子类,viewmode有若干MutableLiveData,view则监听这些 MutableLiveData来刷新UI,这也是mvvm的基础思想
MutableLiveData与LiveData区别
view 通过持有viewmodel对象,注册监听MutableLiveData,那MutableLiveData必须是对view暴露,否则不能访问还监听个毛线,那既然可以访问,那就可以调用MutableLiveData的方法,包括post等方法,但这并不是我们想要的结果,view除了监听MutableLiveData,不应该做别的事情,这个时候LiveData 就体现了它的作用
- LiveData 不可变 ,对外暴露时安全 ,只能监听,post等方法已屏蔽
- MutableLiveData 可变,对外暴露时不安全
用法
val x: LiveData<T> get() = _x //对外暴露为LiveData
private val _x = MutableLiveData<T>() //对内使用 MutableLiveData 操作
网友评论