La biblioteca Lifecycle ofrece APIs integradas que te permiten realizar integraciones a Jetpack Compose. Entre las APIs clave, se incluyen las siguientes:
- Flujos para el
Lifecycle.State
actual LifecycleEffects
que te permite ejecutar un bloque basado en unLifecycle.Event
específico
Estas integraciones proporcionan hooks convenientes para administrar ciclos de vida dentro de la jerarquía de Compose. En este documento, se describe cómo puedes usarlas en tu app.
Cómo recopilar el estado del ciclo de vida con flujos
Lifecycle expone una propiedad currentStateFlow
que proporciona el Lifecycle.State
actual como un StateFlow
de Kotlin. Puedes recopilar este Flow
como State
. De esta forma, se permite que tu app lea los cambios del ciclo de vida durante la composición.
val lifecycleOwner = LocalLifecycleOwner.current
val stateFlow = lifecycleOwner.lifecycle.currentStateFlow
…
val currentLifecycleState by stateFlow.collectAsState()
Se puede acceder al ejemplo anterior con el módulo lifecycle-common
. El método currentStateAsState()
está disponible en el módulo lifecycle-runtime-compose
, lo que te permite leer de manera conveniente el estado actual del ciclo de vida con una sola línea. En el siguiente ejemplo, se demuestra esto:
val lifecycleOwner = LocalLifecycleOwner.current
val currentLifecycleState = lifecycleOwner.lifecycle.currentStateAsState()
Cómo ejecutar código en eventos de ciclo de vida
También hay LifecycleEffects
que te permiten ejecutar un bloque cuando se produce un Lifecycle.Event
en particular.
LifecycleEventEffect(Lifecycle.Event.ON_START) {
// do something here
}
Además de LifecycleEventEffect
, también puedes usar LifecycleStartEffect
y LifecycleResumeEffect
. Estas APIs están vinculadas a eventos específicos. También ofrecen un bloque adicional dentro de su bloque principal que ayuda a limpiar cualquier código que el evento pueda haber iniciado.
LifecycleStartEffect
LifecycleStartEffect
es similar a LifecycleEffect
, pero solo se ejecuta en eventos Lifecycle.Event.ON_START
. También acepta claves que funcionan como otras claves de Compose. Cuando la clave cambia, activa el bloque para que vuelva a ejecutarse.
Cuando hay un evento Lifecycle.Event.ON_STOP
o el efecto sale de la composición, ejecuta un bloque onStopOrDispose
. Esto permite limpiar cualquier trabajo que fuera parte del bloque de partida.
LifecycleStartEffect {
// ON_START code is executed here
onStopOrDispose {
// do any needed clean up here
}
}
LifecycleResumeEffect
LifecycleResumeEffect
funciona de la misma manera que LifecycleStartedEffect
, pero se ejecuta en el evento Lifecycle.Event.ON_RESUME
. También proporciona un bloque onPauseOrDispose
que realiza la limpieza.
LifecycleResumeEffect {
// ON_RESUME code is executed here
onPauseOrDispose {
// do any needed clean up here
}
}