Android面试题——掘金-JetPack之LifeCycle(3.1)
一 概述
1 | Lifecycle 是 Jetpack 提供的 生命周期感知组件,可以简化 组件生命周期管理,避免内存泄漏,提高代码可维护性。 |
二 面试题解答(仅供参考)
2.1 什么是 Lifecycle?它的作用是什么?
1 | 1.概念 |
2.2 Lifecycle 主要包含哪些核心类?
类名 | 作用 |
---|---|
LifecycleOwner | 生命周期所有者(Activity、Fragment) |
LifecycleObserver | 监听生命周期变化(如 LiveData、CameraX) |
Lifecycle | 持有生命周期状态 |
DefaultLifecycleObserver | 推荐的 LifecycleObserver |
LifecycleEventObserver | 监听具体生命周期事件 |
2.3 Lifecycle 组件是如何工作的?
1 | 工作流程 |
2.4 Lifecycle 的状态有哪些?
状态 | 描述 |
---|---|
INITIALIZED | 初始化,但未进入 onCreate() |
CREATED | Activity / Fragment 进入 onCreate() |
STARTED | Activity 进入 onStart() |
RESUMED | Activity 进入 onResume()(UI 可交互) |
DESTROYED | Activity 进入 onDestroy()(生命周期结束) |
2.5 如何让 Activity/Fragment 变成 LifecycleOwner?
1 | 在 AndroidX 之后,Activity 和 Fragment 默认实现了 LifecycleOwner,可以直接获取生命周期对象: |
2.6 如何创建 LifecycleObserver?
1 | 1.旧版写法(已废弃) |
2.7 LifecycleObserver 和 DefaultLifecycleObserver 的区别?
对比项 | LifecycleObserver | DefaultLifecycleObserver(推荐) |
---|---|---|
写法 | 需要 @OnLifecycleEvent |
直接重写方法 |
推荐 | 旧方式(已废弃) | AndroidX 推荐使用 |
示例 | @OnLifecycleEvent(Lifecycle.Event.ON_START) | onStart(owner: LifecycleOwner) |
2.8 LifecycleEventObserver 是什么?
1 | LifecycleEventObserver 可监听 具体生命周期事件,比 DefaultLifecycleObserver 更灵活。 |
2.9 Lifecycle 组件如何避免内存泄漏?
1 | -Lifecycle自动管理组件生命周期,如ViewModel、LiveData绑定LifecycleOwner,Activity销毁时自动清理资源。 |
2.10 Lifecycle 在 Jetpack 组件中的应用?
1 | 1.ViewModel + Lifecycle |
2.11 LifecycleScope 和 lifecycleScope.launchWhenStarted() 的区别?
方法 | 作用 |
---|---|
lifecycleScope.launch | 创建协程,绑定 Lifecycle |
launchWhenStarted | 生命周期进入 STARTED 时执行 |
2.12 如何自定义 LifecycleOwner?
1 | 1.说明 |
2.13 总结
1 | -Lifecycle 让组件感知生命周期,避免手动管理 onResume()、onPause() |
三 参考
- 掘金—知识库的大纲