La libreria Lifecycle offre API integrate che consentono l'integrazione con Jetpack Scrivi. Le API principali includono:
- Flussi per l'attuale
Lifecycle.State
. LifecycleEffects
che ti consente di eseguire un blocco in base a uno specificoLifecycle.Event
.
Queste integrazioni forniscono pratici ganci per gestire i cicli di vita Componi la gerarchia. Questo documento illustra come utilizzarli nella tua app.
Raccogli lo stato del ciclo di vita con i flussi
Il ciclo di vita espone una proprietà currentStateFlow
che fornisce i valori attuali
Lifecycle.State
come StateFlow
Kotlin. Puoi raccogliere questo Flow
come
State
. In questo modo l'app può leggere le modifiche nel ciclo di vita durante
composizione.
val lifecycleOwner = LocalLifecycleOwner.current
val stateFlow = lifecycleOwner.lifecycle.currentStateFlow
…
val currentLifecycleState by stateFlow.collectAsState()
L'esempio precedente è accessibile utilizzando il modulo lifecycle-common
. La
Il metodo currentStateAsState()
è disponibile in lifecycle-runtime-compose
che ti consente di leggere comodamente lo stato del ciclo di vita corrente con un
riga singola. L'esempio seguente dimostra che:
val lifecycleOwner = LocalLifecycleOwner.current
val currentLifecycleState = lifecycleOwner.lifecycle.currentStateAsState()
Esegui il codice su eventi del ciclo di vita
Esistono anche LifecycleEffects
che ti consentono di eseguire un blocco quando un
Si verifica il giorno Lifecycle.Event
.
LifecycleEventEffect(Lifecycle.Event.ON_START) {
// do something here
}
Oltre all'LifecycleEventEffect
, puoi utilizzare anche
LifecycleStartEffect
e LifecycleResumeEffect
. Queste API sono legate
per eventi specifici. Offrono inoltre un blocco aggiuntivo all'interno del blocco principale
che aiuta a ripulire eventuale codice che l'evento potrebbe aver dato il via.
Effetto Inizio ciclo di vita
LifecycleStartEffect
è simile a LifecycleEffect
, ma funziona solo
per eventi Lifecycle.Event.ON_START
. Accetta anche chiavi che funzionano come
Scrivi chiavi. Quando la chiave cambia, attiva di nuovo il blocco.
Quando si verifica un evento Lifecycle.Event.ON_STOP
o l'effetto esce dalla composizione,
esegue un blocco onStopOrDispose
. Ciò consente di ripulire qualsiasi lavoro
che faceva parte del blocco iniziale.
LifecycleStartEffect {
// ON_START code is executed here
onStopOrDispose {
// do any needed clean up here
}
}
Effetto ripresa ciclo di vita
Il LifecycleResumeEffect
funziona come il
LifecycleStartedEffect
, ma viene eseguita il Lifecycle.Event.ON_RESUME
. Fornisce inoltre un blocco onPauseOrDispose
che esegue
eseguire la pulizia.
LifecycleResumeEffect {
// ON_RESUME code is executed here
onPauseOrDispose {
// do any needed clean up here
}
}