La libreria Lifecycle offre API integrate che consentono l'integrazione con Jetpack Scrivi. Le API principali includono:
- Flussi per l'attuale
Lifecycle.State. LifecycleEffectsche 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
}
}