Android 之 Jetpack - Lifecycle

发布于:2025-08-09 ⋅ 阅读:(15) ⋅ 点赞:(0)

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.Log

class 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.Log

class 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.Lifecycle

class 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()


网站公告

今日签到

点亮在社区的每一天
去签到