美文网首页
AndroidViewmodel

AndroidViewmodel

作者: 三季人 | 来源:发表于2018-08-20 16:54 被阅读1019次
    Lifecycles 生命周期

    生命周期组件是 Android 官方架构组件中的核心组件, 它可以使各种实例作为观察者与 Activity 和 Fragment 等具有生命周期特性的组件绑定在一起, LiveData 和 ViewModel 都是基于此组件, 简而言之就是, 你将需要绑定生命周期的实例注册给该组件, 该组件就会在你指定的某个生命周期方法执行时通知这个实例

    几个重要的类

    • LifecycleObserver接口( Lifecycle观察者):实现该接口的类,通过注解的方式,可以通过被LifecycleOwner类的addObserver(LifecycleObserver o)方法注册,被注册后,LifecycleObserver便可以观察到LifecycleOwner的生命周期事件。

    • LifecycleOwner接口(Lifecycle持有者):实现该接口的类持有生命周期(Lifecycle对象),该接口的生命周期(Lifecycle对象)的改变会被其注册的观察者LifecycleObserver观察到并触发其对应的事件。

    • Lifecycle(生命周期):和LifecycleOwner不同的是,LifecycleOwner本身持有Lifecycle对象,LifecycleOwner通过其Lifecycle getLifecycle()的接口获取内部Lifecycle对象。

    • State(当前生命周期所处状态)

    • Event(当前生命周期改变对应的事件):如图所示,当Lifecycle发生改变,如进入onCreate,会自动发出ON_CREATE事件。

    • observer类中,使用OnLifecycleEvent注解新生成的类

      • 在build-> intermediates->exploded-aar->对应的module下
      • 事件发生变化后会调用sync()方法,同步通知observer中的状态
    LiveData

    LiveData是一个可观察的数据持有者类。与常见的观察者不同,LiveData是有生命周期感知的。这意味着它尊重其他应用程序组件的生命周期,比如Activity、Fragment或Service。这种感知确保LiveData只更新处于生命周期状态内的应用程序组件。

    ViewModel

    ViewModel 有两个功能, 第一个功能可以使 ViewModel 以及 ViewModel 中的数据在屏幕旋转或配置更改引起的 Activity 重建时存活下来, 重建后数据可继续使用, 第二个功能可以帮助开发者轻易实现 Fragment 与 Fragment 之间, Activity 与 Fragment 之间的通讯以及共享数据

    使用
    1. 通过创建MyViewmodel extends AndroidViewModule
    2. 内部新建MutableLiveData<T> 创建可监听数据
    3. 通过context获取到viewmodule 添加监听 viewmodule.liveData.observer()

    转自改造 Android 官方架构组件 ViewModel
    转自Lifecycle详解&原理分析

    相关文章

      网友评论

          本文标题:AndroidViewmodel

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