La libreria del ciclo di vita offre API integrate che consentono l'integrazione con Jetpack Compose. Le API chiave includono le seguenti:
- Flussi relativi all'attuale
Lifecycle.State
. LifecycleEffects
che ti consente di eseguire un blocco in base a unLifecycle.Event
specifico.
Queste integrazioni offrono pratici hook per gestire i cicli di vita all'interno della gerarchia di Scrivi. Questo documento descrive 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 l'elemento Lifecycle.State
corrente come StateFlow
di Kotlin. Puoi raccogliere questo Flow
come
State
. Ciò consente all'app di leggere le modifiche nel ciclo di vita durante la composizione.
val lifecycleOwner = LocalLifecycleOwner.current
val stateFlow = lifecycleOwner.lifecycle.currentStateFlow
…
val currentLifecycleState by stateFlow.collectAsState()
L'esempio precedente è accessibile utilizzando il modulo lifecycle-common
. Il metodo currentStateAsState()
è disponibile nel modulo lifecycle-runtime-compose
, che consente di leggere comodamente lo stato del ciclo di vita attuale con una singola riga. Lo dimostra l'esempio seguente:
val lifecycleOwner = LocalLifecycleOwner.current
val currentLifecycleState = lifecycleOwner.lifecycle.currentStateAsState()
Esegui il codice sugli eventi del ciclo di vita
Esistono anche LifecycleEffects
che ti consentono di eseguire un blocco quando si verifica una determinata Lifecycle.Event
.
LifecycleEventEffect(Lifecycle.Event.ON_START) {
// do something here
}
Oltre a LifecycleEventEffect
, puoi utilizzare anche
LifecycleStartEffect
e LifecycleResumeEffect
. Queste API sono legate a
eventi specifici. Offrono anche un blocco aggiuntivo all'interno del blocco principale
che consente di ripulire qualsiasi codice che l'evento ha avviato.
Effetto inizio ciclo di vita
LifecycleStartEffect
è simile a LifecycleEffect
, ma viene eseguito solo
per gli eventi Lifecycle.Event.ON_START
. Accetta anche chiavi che funzionano come altri tasti di composizione. Quando la chiave viene modificata, attiva di nuovo il blocco.
Quando si verifica un evento Lifecycle.Event.ON_STOP
o l'effetto esce dalla composizione,
viene eseguito 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 ripristino ciclo di vita
LifecycleResumeEffect
funziona come l'LifecycleStartedEffect
, ma viene eseguito invece sull'evento Lifecycle.Event.ON_RESUME
. Fornisce inoltre un blocco onPauseOrDispose
che esegue la pulizia.
LifecycleResumeEffect {
// ON_RESUME code is executed here
onPauseOrDispose {
// do any needed clean up here
}
}