美文网首页android学习
MutableLiveData与LiveData区别:可变与不可

MutableLiveData与LiveData区别:可变与不可

作者: RedB | 来源:发表于2021-11-05 10:29 被阅读0次

    之前看到很多中文博客说:

    LiveData在实体类里可以通知指定某个字段的数据更新;
    MutableLiveData则是完全是整个实体类或者数据类型变化后才通知.不会细节到某个字段。

    看的我是一头雾水,于是去StackOverflow搜了下,高赞答案却主要在说:

    LiveData is immutable. MutableLiveData is LiveData which is mutable & thread-safe (LiveData是不可变的,MutableLiveData是可变的)

    如果我们进一步看看MutableLiveData.java仅有40多行的源码,就会发现确实后者说的对,MutableLiveData仅仅是暴露出来了setValue和postValue方法:

    // **仅精简了注释**
    // LiveData which publicly exposes setValue(T) and postValue(T) method.
    public class MutableLiveData<T> extends LiveData<T> {
    
        // Creates a MutableLiveData initialized with the given {@code value}.
        public MutableLiveData(T value) {
            super(value);
        }
    
        // Creates a MutableLiveData with no value assigned to it.
        public MutableLiveData() {
            super();
        }
    
        @Override
        public void postValue(T value) {
            super.postValue(value);
        }
    
        @Override
        public void setValue(T value) {
            super.setValue(value);
        }
    }
    

    最后,在Android官方的应用架构指南里,也同时用到了二者。
    它是在ViewModel内部使用了private的MutableLiveData实例,但对外暴露的是LiveData类型,按我的理解,目的应该是防止误修改吧。

    官方应用架构指南

    相关文章

      网友评论

        本文标题:MutableLiveData与LiveData区别:可变与不可

        本文链接:https://www.haomeiwen.com/subject/fezlzltx.html