Android生命周期感知组件Lifecycle

本文介绍了Android中的Lifecycle组件,包括LifecycleObserver作为监听器,LifecycleOwner如Activity或Fragment,以及如何通过实现Lifecycle接口来感知并处理组件的不同生命周期阶段,如onCreate、onResume、onPause和onDestroy事件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、概述

二、组成

三、应用场景

四、应用举例


一、概述

Lifecycle生命周期感知组件,是为了监听具有生命周期的(Activity或fragment等)组件的生命周期的变化。当组件(Activity/Fragment)生命周期发生变化时,观察者中事件对应方法会被回调。在观察者回调方法中可以做与组件(Activity/Fragment)生命周期变化对应的资源或者业务逻辑的处理(如,activity走了ondestroy后,观察者回调到事件ON_DESTROY后,在对应方法下做释放资源等操作)。观察者中监听回调方法也可以被其他对象监听,再做相应的处理。

二、组成

生命周期感知组件由三部分组成:

LifecycleOberver——组件生命周期变化监听者或观察者

LifecycleOwner——具有生命周期的组件需实现的接口(即,拥有生命周期的组件如Activity/Fragment)

Lifcycle——LifecycleOberver和LifecycleOwner之间实现感知生命周期变化的桥梁。存储有关组件(如Activity或Fragment)生命周期状态的抽象类。它使用枚举来表示不同的生命周期状态(如CREATED、STARTED、RESUMED等),并提供方法让观察者查询当前状态。

三、应用场景

生命周期感知组件在Android开发中有着广泛的应用场景,包括但不限于:

  • 资源管理:在组件进入不同的生命周期阶段时,自动释放或重新分配资源,如停止后台任务、取消网络请求、释放Bitmap等,从而避免内存泄漏。
  • UI更新:根据组件的生命周期状态变化,动态更新UI元素,如显示或隐藏某些视图。
  • 数据加载:在组件处于活跃状态时加载数据,在组件进入非活跃状态时停止数据加载,以提升用户体验。

四、应用举例

1、LifecycleOwner实现类:

package com.example.lifecycle

import android.os.Bundle
import android.util.Log
import androidx.activity.ComponentActivity
import androidx.lifecycle.Lifecycle

class MainActivity : ComponentActivity() {//ComponentActivity实现了LifecycleOwner接口
    private val TAG = "MainActivity"
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        Log.d(TAG,"onCreate")
        //添加观察者监听生命周期的变化
        lifecycle.addObserver(MyLifeCycleObserver())
    }

    fun getLifeCycle(): Lifecycle {
        return lifecycle
    }

    override fun onStart() {
        super.onStart()
        Log.d(TAG,"")
    }

    override fun onResume() {
        super.onResume()
        Log.d(TAG,"onResume")
    }

    override fun onPause() {
        super.onPause()
        Log.d(TAG,"onPause")
    }

    override fun onStop() {
        super.onStop()
        Log.d(TAG,"onStop")
    }

    override fun onDestroy() {
        super.onDestroy()
        Log.d(TAG,"onDestroy")
    }

}

2、LifecycleOberver观察者类

package com.example.lifecycle

import android.util.Log
import androidx.lifecycle.DefaultLifecycleObserver
import androidx.lifecycle.LifecycleOwner

class MyLifeCycleObserver : DefaultLifecycleObserver {
    private val TAG = "MyLifeCycleObserver"
    //在如下onCreate,onResume等回调方法里可以做跟生命周期方法变化相关联的业务逻辑或者界面逻辑的处理

    override fun onCreate(owner: LifecycleOwner) {
        super.onCreate(owner)
        Log.d(TAG,"onCreate===========================")
    }

    override fun onStart(owner: LifecycleOwner) {
        super.onStart(owner)
        Log.d(TAG,"onStart============================")
    }

    override fun onResume(owner: LifecycleOwner) {
        super.onResume(owner)
        Log.d(TAG,"onResume==========================")
    }


    override fun onPause(owner: LifecycleOwner) {
        super.onPause(owner)
        Log.d(TAG,"onPause==========================")
    }

    override fun onStop(owner: LifecycleOwner) {
        super.onStop(owner)
        Log.d(TAG,"onStop===========================")
    }

    override fun onDestroy(owner: LifecycleOwner) {
        super.onDestroy(owner)
        Log.d(TAG,"onDestroy=========================")
    }
}

3、上述代码运行输出结果如下

onCreate
onCreate===========================
onStart
onStart============================
onResume
onResume==========================
onPause==========================
onPause
onStop===========================
onStop
onDestroy=========================
onDestroy

 

推荐文章

深入理解Android开发中的生命周期感知Lifecycle-百度开发者中心

使用生命周期感知型组件处理生命周期  |  App architecture  |  Android Developers

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

闲暇部落

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值