生命周期
Compose Multiplatform 中组件的生命周期概念继承自 Jetpack Compose 的生命周期体系。具有生命周期感知能力的组件可以响应其他组件的生命周期状态变化,帮助您构建更清晰、更轻量且易于维护的代码。
Compose Multiplatform 提供了通用的 LifecycleOwner
实现,将原始 Jetpack Compose 功能扩展到其他平台,并支持在通用代码中观察生命周期状态。
状态与事件
生命周期状态与事件流转(与 Jetpack 生命周期一致):
生命周期实现
可组合项通常不需要独立生命周期:通用的 LifecycleOwner
会为所有关联实体提供统一的生命周期。默认情况下,Compose Multiplatform 创建的所有可组合项共享相同生命周期——它们可以订阅其事件、引用生命周期状态等。
在多平台生命周期中使用协程时需注意: Lifecycle.coroutineScope
值绑定于 Dispatchers.Main.immediate
,该调度器在桌面平台默认可能不可用。为确保生命周期内的协程和流在 Compose Multiplatform 中正常工作,请添加 kotlinx-coroutines-swing
依赖项。详见 Dispatchers.Main
文档。
导航组件中的生命周期机制详见 导航与路由
多平台 ViewModel 实现的更多内容参见 通用ViewModel
Android 生命周期到其他平台的映射
iOS
原生事件与通知 | 生命周期事件 | 生命周期状态变更 |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Web
受 Wasm 目标限制,Web平台生命周期:
跳过
CREATED
状态(应用始终附着于页面)永不进入
DESTROYED
状态(网页通常仅在用户关闭标签页时终止)
原生事件 | 生命周期事件 | 生命周期状态变更 |
---|---|---|
|
|
|
|
|
|
Desktop
Swing 监听器回调 | 生命周期事件 | 生命周期状态变更 |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|