Lifecycle与LiveData的珠联璧合

本文详细介绍了Android开发中的Lifecycle组件和LiveData的原理与使用方法。Lifecycle组件负责跟踪Activity和Fragment的生命周期状态,而LiveData是一个生命周期感知型的数据存储类。两者结合使用,可以确保在正确的时间更新界面,实现组件间的高效协作。文章还提供了具体的使用示例和源码分析。
摘要由CSDN通过智能技术生成

LifecycleLiveData的讲解

lifecycle

Lifecycle是生命周期感知型组件,什么是生命感知型组件?就是与Activity或者Fragment绑定之后,可执行一些操作来响应Activity和Fragment的生命周期状态的变化。

lifecycle是一个类,用于存储有关组件(如 ActivityFragment)的生命周期状态的信息,并且允许其他对象观察此状态。Lifecycle使用两种主要枚举跟踪其关联组件的生命周期状态:这两个枚举类分别是State和Event。

State:当前生命周期所处状态。有以下状态:CREATEDSTARTEDRESUMEDDESTROYEDINITIALIZED

Event:当前生命周期改变对应的事件。 有以下事件:ON_CREATE,ON_START,ON_RESUME,ON_PAUSE,ON_STOP,ON_DESTROY,ON_ANY;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oCzUr0zA-1641547282895)(https://developer.android.com/images/topic/libraries/architecture/lifecycle-states.svg?hl=zh-cn)]

注意这张事件和状态的转换图,它的意思是,从一开始的INITIALIZED状态,经过了onCreate事件,也就是Activity或者FragmentonCreate函数之后,他就变成了CREATED状态,其他的事件和状态的转换同理。就不一一列举了。

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

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

通过以上介绍可以知道:实现 LifecycleObserver的组件可与实现 LifecycleOwner的组件完美配合,因为LifecycleOwner可以提供生命周期,而LifecycleObserver可以注册以便观察组件的生命周期。

LifeCycle的用法:以官网的定位功能为例

//没有使用LifeCycle的情况
class MyActivity : AppCompatActivity() {
   
    private lateinit var myLocationListener: MyLocationListener

    override fun onCreate(...) {
   
        myLocationListener = MyLocationListener(this) {
    location ->
            // update UI
        }
    }

    public override fun onStart() {
   
        super.onStart()
        Util.checkUserStatus {
    result ->
            // 如果在活动停止后调用这个回调会怎样?可能会崩溃
            if (result) {
   
                myLocationListener.start()
            }
        }
    }

    public override fun onStop() {
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值