Lifecycle 程式庫提供內建的 API,可讓您與 Jetpack 整合 Compose。主要 API 包括:
- 目前
Lifecycle.State
的流程。 LifecycleEffects
,可讓您根據特定Lifecycle.Event
。
這些整合提供便利的掛鉤,方便您管理 Compose 階層。本文件將概述如何在應用程式中使用這些內容。
透過資料流收集生命週期狀態
生命週期公開提供 currentStateFlow
屬性,可提供目前的
Lifecycle.State
為 Kotlin StateFlow
。您可以將此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
}
}