Android-MVVM之快速上手LiveData
什么是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();
}
}