Kotlin Multiplatform Development Help

生命周期

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 文档

Android 生命周期到其他平台的映射

iOS

原生事件与通知

生命周期事件

生命周期状态变更

viewDidDisappear

ON_STOP

STARTEDCREATED

viewWillAppear

ON_START

CREATEDSTARTED

willResignActive

ON_PAUSE

RESUMEDSTARTED

didBecomeActive

ON_RESUME

STARTEDRESUMED

didEnterBackground

ON_STOP

STARTEDCREATED

willEnterForeground

ON_START

CREATEDSTARTED

viewControllerDidLeaveWindowHierarchy

ON_DESTROY

CREATEDDESTROYED

Web

受 Wasm 目标限制,Web平台生命周期:

  • 跳过 CREATED 状态(应用始终附着于页面)

  • 永不进入 DESTROYED 状态(网页通常仅在用户关闭标签页时终止)

原生事件

生命周期事件

生命周期状态变更

blur

ON_PAUSE

RESUMEDSTARTED

focus

ON_RESUME

STARTEDRESUMED

Desktop

Swing 监听器回调

生命周期事件

生命周期状态变更

windowIconified

ON_STOP

STARTEDCREATED

windowDeiconified

ON_START

CREATEDSTARTED

windowLostFocus

ON_PAUSE

RESUMEDSTARTED

windowGainedFocus

ON_RESUME

STARTEDRESUMED

dispose

ON_DESTROY

CREATEDDESTROYED

22 四月 2025