Jetpack系列目录:
1、 Lifecycle原理分析
2、 LiveData原理分析
3、 DataBinding原理分析
4、 Navigation原理分析
1.LiveData的使用分析
可以看出 observe() 方法有两个参数:
1)第一个参数是LifecycleOwner
2)第二个参数是observer
MutableLiveData<String> liveData=new MutableLiveData<>();
// observe 订阅关系
liveData.observe(this, new Observer<String>() {
@Override
public void onChanged(String s) {
Log.e(TAG, "onChanged: "+s );
}
});
2.LiveData的核心原理
1)observe方法中主要是用 LifecycleBoundObserver 将LifecycleOwner进行一次包装后,存入 mObservers 的一个Map集合中,最后addObserver方法将 observer对象 和 owner对象 的生命周期进行绑定。
@MainThread
public void observe(@NonNull LifecycleOwner owner, @NonNull Observer<? super T> observer) {
assertMainThread("observe");
if (owner.getLifecycle().getCurrentState() == DESTROYED) {
//根据 state 判断当前被观察者
return;
}
LifecycleBoundObserver wrapper =