什么是LiveData
LiveData
是Android Architecture Components
其中的一个组件。主要用于更新UI数据和组件之间传值。
1、LiveData是一种持有可被观察数据的类。它通过观察者模式实现了数据变化的动态通知,即当观察者生命周期处于活跃状态时,能够感知数据的变化。
2、能够感知生命周期,内部通过Lifecycle来感知生命周期,在Activity、Fragment、Service中当对应生命周期为Destroy的时候,会销毁观察者,避免内存泄露;
LiveData的简单使用
LiveData的使用十分方便,只需要简单的三步:
1、创建LiveData对象,LiveData
是抽象类,所以需要创建它的子类MutableLiveData
;
2、设置观察者observe,第一个参数是LifecycleOwner
对象,第二个是观察者监听,当数据改变的时候会在onChanged
方法内做出响应;
3、设置数据,通过postValue
或者setValue
方法来更新数据;
public class MainActivity extends AppCompatActivity {
private MutableLiveData liveData;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 1.创建LiveData对象
liveData = new MutableLiveData();
// 2.添加观察者
liveData.observe(this, new Observer<String>() {
@Override
public void onChanged(String s) {
// 提示数据变化
Toast.makeText(MainActivity.this, s, Toast.LENGTH_SHORT).show();
}
});
findViewById(R.id.button1).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 3.改变数据
liveData.postValue("测试");
}
});
}
}
LiveData原理
一、LiveData是如何实现观察者订阅,并发送事件的?
LiveData通过observe和observeForever来订阅观察者,查看源码可以看到
@MainThread