当前位置: 首页 > news >正文

Android 之 Jetpack - Lifecycle

1. 添加依赖(app/build.gradle.kts

dependencies {val lifecycleVersion = "2.8.0"implementation("androidx.lifecycle:lifecycle-runtime-ktx:$lifecycleVersion")implementation("androidx.lifecycle:lifecycle-common-java8:$lifecycleVersion")
}

注​​:Kotlin 项目需启用 kotlin-kapt插件支持注解处理

2. 创建 LifecycleObserver(两种实现方式)

​方式一:继承 DefaultLifecycleObserver(官方推荐)
import androidx.lifecycle.DefaultLifecycleObserver
import androidx.lifecycle.LifecycleOwner
import android.util.Logclass CustomLifecycleObserver : DefaultLifecycleObserver {private val TAG = "LifecycleObserver"override fun onCreate(owner: LifecycleOwner) {Log.d(TAG, "onCreate - State: ${owner.lifecycle.currentState}")}override fun onStart(owner: LifecycleOwner) {Log.d(TAG, "onStart - State: ${owner.lifecycle.currentState}")}override fun onResume(owner: LifecycleOwner) {Log.d(TAG, "onResume - State: ${owner.lifecycle.currentState}")}override fun onPause(owner: LifecycleOwner) {Log.d(TAG, "onPause - State: ${owner.lifecycle.currentState}")}override fun onDestroy(owner: LifecycleOwner) {Log.d(TAG, "onDestroy - State: ${owner.lifecycle.currentState}")}
}
方式二:使用注解(旧版兼容)
import androidx.lifecycle.LifecycleObserver
import androidx.lifecycle.OnLifecycleEvent
import androidx.lifecycle.Lifecycle
import android.util.Logclass AnnotationLifecycleObserver : LifecycleObserver {private val TAG = "AnnotationObserver"@OnLifecycleEvent(Lifecycle.Event.ON_CREATE)fun setupResources() {Log.d(TAG, "Resources initialized")}@OnLifecycleEvent(Lifecycle.Event.ON_STOP)fun releaseResources() {Log.d(TAG, "Resources released")}
}

3. 在 Activity 中注册观察者

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.lifecycle.Lifecycleclass MainActivity : AppCompatActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)// 注册两种观察者lifecycle.addObserver(CustomLifecycleObserver())lifecycle.addObserver(AnnotationLifecycleObserver())// 实时打印当前生命周期状态(验证状态变化)Log.d("MainActivity", "Current State: ${lifecycle.currentState}") // 输出:CREATED}override fun onResume() {super.onResume()Log.d("MainActivity", "Current State: ${lifecycle.currentState}") // 输出:RESUMED}
}

4. 生命周期状态与事件关系

Lifecycle 的 ​​5 种状态​​与 ​​7 种事件​​映射关系:

​状态(State)​

​触发事件(Event)​

​说明​

INITIALIZED

-

初始状态(Activity 未创建)

CREATED

ON_CREATE

在 onCreate()

STARTED

ON_START

在 onStart()

RESUMED

ON_RESUME

在 onResume()

DESTROYED

ON_DESTROY

在 onDestroy()

http://www.lryc.cn/news/612861.html

相关文章:

  • 告别复杂配置!cpolar让Prometheus监控突破网络限制
  • 【PHP 接口(Interface)完全入门指南】
  • 力控汽车零部件冲压MES系统方案
  • 汽车线束设计—导线的选取
  • 亚远景-ISO 42001:汽车AI安全的行业标准新趋势
  • 数字孪生系统让汽车工厂虚实联动预测维护少停机
  • Flink-1.19.0-核心源码详解
  • Linux图文理解进程
  • Android-Kotlin基础(Jetpack①-ViewModel)
  • 软件测试中,pytest 运行完成后,如何自动发送邮件?
  • 解密MVCC:如何实现高效的数据库并发
  • Linux学习-数据结构(二叉树)
  • 【物联网】基于树莓派的物联网开发【24】——树莓派安装influxDB时序数据库
  • 关于AI应用案例计算机视觉、自然语言处理、推荐系统和生成式AI四大领域的详细技术分析。
  • 时序数据库的功能与应用价值
  • uniapp-vue2导航栏全局自动下拉变色
  • 护网行动之后:容器安全如何升级?微隔离打造内网“微堡垒”
  • imx6ull-驱动开发篇12——GPIO子系统驱动LED
  • Android Studio(2025.1.2)Gemini Agent 使用指南
  • 如何使用 pnpm创建Vue 3 项目
  • Vue内置动画组件 Transition
  • 【FreeRTOS】(号外)任务间通讯2: 信号量- Counting Semaphore
  • 前端发布 发布前端项目流程
  • Spring AI + Redis:构建高效AI应用缓存方案
  • 华为 2025 校招目标院校
  • 杂谈:大模型与垂直场景融合的技术趋势
  • 高通芯片漏洞被在野利用,谷歌发布紧急安卓补丁
  • Swift 实战:高效设计 Tic-Tac-Toe 游戏逻辑(LeetCode 348)
  • ansible-playbook之yum
  • Daemon Tools for Mac —— 专业虚拟光驱与磁盘映像工具