美文网首页
LiveData实现原理

LiveData实现原理

作者: ModestStorm | 来源:发表于2022-11-26 10:13 被阅读0次

    LiveData
    使用LiveData LiveData = new LiveData();

    liveData.obsever(LifeCycleOwner owner,new Observer<Data>() {
    @Override
    public void onChanged(Data data) {
    textview.setText(data.getText());
    }});

    Activity继承了LifeCycleOwner,它是被观察者,管理着所有的观察者,当生命周期状态变化的时候会通知观察者作出响应。

    实际上LiveData传递数据的方法也是通过Handler。在postValue()方法中,LiveData调用ArchTaskExecutor.postToMainThread(),将一个Runnable对象传递给主线程。这个Runnable对象调用setValue()对数据进行更新。

    另一个经常和LiveData搭配使用的是ViewModel。ViewModel用于管理Activity或Fragment中的各LiveData对象。可以把ViewModel看成是LiveData的集合。ViewModel的优点是可以和Activity或Fragment绑定在一起,并且在配置改变引起的Activity/Fragment销毁时,ViewModel仍然可以持有状态。

    LiveData通过观察宿主的生命周期变化,接受通知其onChange()方法会回调,进而设置Ui数据,这本身是观察者模式,LiveData是观察者,宿主是被观察者。被观察者变化引起观察者变化。

    2.LiveData在注册的时候 会绑定生命周期 ,当宿主销毁的时候 LiveData反注册
    3.当宿主的生命周期变得非活跃状态的时候,那么它将在再次变成活跃状态时能够接受到最新的数据,比如Activity前台到后台 后台到前台。

    判断当前宿主的生命周期状态 是否是STARTED或RESUMED ,是的话就是活跃状态就可以发送数据回调onChanged方法,onPause时生命周期不活跃不会调用onChanged方法,remove的时候需要移除观察者。

    相关文章

      网友评论

          本文标题:LiveData实现原理

          本文链接:https://www.haomeiwen.com/subject/pkvazrtx.html