Lifecycle 库提供的内置 API 可让您与 Jetpack 集成 写邮件。关键 API 包括:
- 当前
Lifecycle.State
的流。 LifecycleEffects
,可让您根据特定的Lifecycle.Event
。
这些集成提供了便捷的钩子来管理 Compose 层次结构。本文档简要介绍了如何在应用中使用它们。
使用数据流收集生命周期状态
Lifecycle 公开了 currentStateFlow
属性,用于提供当前的
以 Kotlin StateFlow
的形式使用 Lifecycle.State
。您可以通过以下账号收集此Flow
:
State
。这样,您的应用就可以读取生命周期中的更改
组合。
val lifecycleOwner = LocalLifecycleOwner.current
val stateFlow = lifecycleOwner.lifecycle.currentStateFlow
…
val currentLifecycleState by stateFlow.collectAsState()
可使用 lifecycle-common
模块访问上述示例。通过
lifecycle-runtime-compose
中提供了 currentStateAsState()
方法
模块,可让您方便地使用
单行。以下示例对此进行了演示:
val lifecycleOwner = LocalLifecycleOwner.current
val currentLifecycleState = lifecycleOwner.lifecycle.currentStateAsState()
针对生命周期事件运行代码
此外,还有 LifecycleEffects
可以让您在特定事件
发生了 Lifecycle.Event
。
LifecycleEventEffect(Lifecycle.Event.ON_START) {
// do something here
}
除了 LifecycleEventEffect
之外,您还可以使用
LifecycleStartEffect
和LifecycleResumeEffect
。这些 API
特定事件此外,他们还在其主要屏蔽规则中额外设置了一项屏蔽规则
以帮助清理事件可能已启动的任何代码
LifecycleStartEffect
LifecycleStartEffect
与 LifecycleEffect
类似,但只运行
关于 Lifecycle.Event.ON_START
个事件。它还接受与其他密钥的工作原理
撰写键。当键发生变化时,会触发该代码块再次运行。
当出现 Lifecycle.Event.ON_STOP
事件或效应退出组合时,
它会执行 onStopOrDispose
代码块。这样可以清理出
作为起始代码块的一部分。
LifecycleStartEffect {
// ON_START code is executed here
onStopOrDispose {
// do any needed clean up here
}
}
LifecycleResumeEffect
LifecycleResumeEffect
的工作方式与
LifecycleStartedEffect
,但它在 Lifecycle.Event.ON_RESUME
上执行。
事件。它还提供了一个 onPauseOrDispose
代码块,用于执行
清理。
LifecycleResumeEffect {
// ON_RESUME code is executed here
onPauseOrDispose {
// do any needed clean up here
}
}