Android-MVVM之快速上手LiveData

LiveData是一个观察者模式的实现,它与Android的生命周期绑定,避免内存泄漏。在ViewModel中使用LiveData来存储数据,即使Activity销毁,数据仍能保持,方便多个Fragment共享。当LiveData的值改变时,会自动通知关联的Observer更新UI。
摘要由CSDN通过智能技术生成

什么是LiveData?

LiveData数据存储器类。可以简单的理解成就是一个容器。与ArrayList类似。只不过这个容器能观察生命周期。

既然都是容器为啥用LiveData却不用别的?

  • 使用LiveData后,它会在其关联的activity和fragment的生命周期遭到销毁后进行自我清理。也就是说,它不会发生内存泄漏 不再需要手动处理生命周期 不会因 Activity 停止而导致崩溃

LiveData的demo

  • 一般来说LiveData会和ViewModel一起食用(使用)。可以简单的理解为,LiveData是一个存数据的容器,但是能观察ui的生命周期,所以用它。

  • ViewModel是LiveData的存储容器,因为它的生命周期长,可以让数据持续的存储,直到activity销毁,当然,多个fragment共享数据也是ViewModel常用的功能。

public class MyViewModel extends ViewModel {

//  第一步实例化一个单例的LiveData对象。
private MutableLiveData<String> currentValue;

    public MutableLiveData<String> getCurrentName() {
        if (currentValue == null) {
            currentValue = new MutableLiveData<String>();
        }
        return currentValue;
    }

    // 第二步:修改LiveData中的值
    public void changeValue(){
       currentValue.setValue("1")
    }
}

public class Activity extends AppCompatActivity {

    private MyViewModel model;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 实例化ViewModel
        model = new ViewModelProvider(this).get(MyViewModel.class);

        // 第三步:创建监听,当LiveData中的值改变的时候,会触发onChanged()方法
        final Observer<String> myObserver = new Observer<String>() {
            @Override
            public void onChanged(@Nullable final String newName) {
                TextView.setText(newName);
            }
        };

        // 第四步:观察者与被观察者建立联系
        model.getCurrentValue().observe(this, nameObserver);

       // 第五步:当LiveData的值改变的时候,会触发onChanged()方法。
       model.changeValue();
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值