对Lifecycle liveData的理解:
System已经做了:Fragment/Actvity已经实现了LifecycleOwner 的接口:
Userdo:1-->viewMode(或者IPresenter )implements LifecycleObserver
2-->只需在Fragment/Activity中调用:getLifecycle().addObserver(viewModel);
3-->viewModel.dataList.observe(owner, Observer);
1--2---原理:
Fragment/Activity的构造方法中已经调用了下列方法:
fragmet.png
getLifecycle()返回的对象mLifecycleRegistry,在LifecycleOwner( Activity/Fragment)的生命周期方法中都做了监听,这就方便了我们Observer(viewMode或者Presenter)对LifecycleOwner生命周期的感知
--3--LiveData原理:
viewModel.dataList.observe(owner, Observer)------> LifecycleBoundObserver wrapper = new LifecycleBoundObserver(owner, observer);它实现了GenericLifecycleObserver,而GenericLifecycleObserver继承了LifecycleObserver接口。当组件(Fragment/Activity)生命周期变化时会通过onStateChanged()方法回调过来。Observer接口就是观察者,其中定义了LiveData数据变化的回调方法onChanged()。
因此我们就可以使用三部曲搞定 data对ui的生命周期的监控
Databinding就更简单了,直接跟着撸码就ok了,Fragment、Activity通过DataBindingUtil.inflate()就可以联系起来,而且可以双向绑定哦。
Lifecycle+liveData+DataBinding才是最爽的编码方式。
具体原理:[https://blog.csdn.net/zhuzp_blog/article/details/78871527]
网友评论