La bibliothèque Lifecycle propose des API intégrées qui vous permettent d'intégrer Jetpack Compose. Voici les API principales :
- Flux pour le
Lifecycle.State
actuel. LifecycleEffects
qui vous permet d'exécuter un bloc en fonction d'unLifecycle.Event
spécifique.
Ces intégrations fournissent des hooks pratiques pour gérer les cycles de vie dans la hiérarchie de Compose. Ce document explique comment les utiliser dans votre application.
Collecter l'état du cycle de vie avec des flux
Lifecycle expose une propriété currentStateFlow
qui fournit le Lifecycle.State
actuel sous la forme d'un StateFlow
Kotlin. Vous pouvez collecter ce Flow
en tant que State
. Cela permet à votre application de lire les modifications apportées au cycle de vie pendant la composition.
val lifecycleOwner = LocalLifecycleOwner.current
val stateFlow = lifecycleOwner.lifecycle.currentStateFlow
…
val currentLifecycleState by stateFlow.collectAsState()
L'exemple précédent est accessible à l'aide du module lifecycle-common
. La méthode currentStateAsState()
est disponible dans le module lifecycle-runtime-compose
, qui vous permet de lire facilement l'état actuel du cycle de vie sur une seule ligne. En voici un bon exemple :
val lifecycleOwner = LocalLifecycleOwner.current
val currentLifecycleState = lifecycleOwner.lifecycle.currentStateAsState()
Exécuter du code sur des événements de cycle de vie
Il existe également des LifecycleEffects
qui vous permettent d'exécuter un bloc lorsqu'un Lifecycle.Event
spécifique se produit.
LifecycleEventEffect(Lifecycle.Event.ON_START) {
// do something here
}
En plus de LifecycleEventEffect
, vous pouvez également utiliser LifecycleStartEffect
et LifecycleResumeEffect
. Ces API sont liées à des événements spécifiques. Elles proposent également un bloc supplémentaire dans leur bloc principal qui permet de nettoyer tout code que l'événement peut avoir lancé.
LifecycleStartEffect
LifecycleStartEffect
est semblable à LifecycleEffect
, mais ne s'exécute que pour les événements Lifecycle.Event.ON_START
. Les clés qui fonctionnent comme les autres clés Compose sont également acceptées. Un changement de clé déclenche une nouvelle exécution du bloc.
Lorsqu'un événement Lifecycle.Event.ON_STOP
se produit ou que l'effet quitte la composition, un bloc onStopOrDispose
est exécuté. Cela permet de nettoyer toute tâche qui faisait partie du bloc de départ.
LifecycleStartEffect {
// ON_START code is executed here
onStopOrDispose {
// do any needed clean up here
}
}
LifecycleResumeEffect
LifecycleResumeEffect
fonctionne de la même manière que LifecycleStartedEffect
, mais s'exécute sur l'événement Lifecycle.Event.ON_RESUME
. Il fournit également un bloc onPauseOrDispose
qui effectue le nettoyage.
LifecycleResumeEffect {
// ON_RESUME code is executed here
onPauseOrDispose {
// do any needed clean up here
}
}