Biblioteka cyklu życia oferuje wbudowane interfejsy API, które umożliwiają integrację z Jetpackiem Utwórz. Kluczowe interfejsy API obejmują:
- Przepływy dla bieżącego źródła danych
Lifecycle.State
. LifecycleEffects
, który umożliwia uruchamianie blokady na podstawieLifecycle.Event
Te integracje zapewniają wygodne punkty do zarządzania cyklami życia w Utwórz hierarchię. Z tego dokumentu dowiesz się, jak ich używać w swojej aplikacji.
Zbieraj stan cyklu życia za pomocą przepływów
Cykl życia ujawnia właściwość currentStateFlow
, która udostępnia bieżącą
Lifecycle.State
jako StateFlow
Kotlin. Możesz zbierać te dane (Flow
) jako:
State
Pozwoli to aplikacji odczytywać zmiany w cyklu życia
kompozycji.
val lifecycleOwner = LocalLifecycleOwner.current
val stateFlow = lifecycleOwner.lifecycle.currentStateFlow
…
val currentLifecycleState by stateFlow.collectAsState()
Poprzedni przykład jest dostępny za pomocą modułu lifecycle-common
.
Metoda currentStateAsState()
jest dostępna w: lifecycle-runtime-compose
który pozwala wygodnie odczytywać bieżący stan cyklu życia za pomocą
jeden wiersz. Oto przykład:
val lifecycleOwner = LocalLifecycleOwner.current
val currentLifecycleState = lifecycleOwner.lifecycle.currentStateAsState()
Uruchamianie kodu w zdarzeniach cyklu życia
Istnieją również LifecycleEffects
, które pozwalają na uruchomienie bloku, gdy
Lifecycle.Event
.
LifecycleEventEffect(Lifecycle.Event.ON_START) {
// do something here
}
Oprócz LifecycleEventEffect
możesz też użyć tej funkcji
LifecycleStartEffect
i LifecycleResumeEffect
. Te interfejsy API są powiązane z
konkretnych zdarzeń. Zapewniają też dodatkowy blok w ramach bloku podstawowego.
który pomaga usunąć kod wywołany zdarzeniem.
Początek cyklu życia
LifecycleStartEffect
jest podobny do LifecycleEffect
, ale działa tylko
w Lifecycle.Event.ON_START
wydarzeniach. Akceptuje też klucze, które działają jak inne
Klucze tworzenia wiadomości. Zmiana klucza powoduje ponowne uruchomienie bloku.
Gdy wystąpi zdarzenie Lifecycle.Event.ON_STOP
lub efekt zniknie z kompozycji,
wykonuje blok onStopOrDispose
. Pozwala to na porządki w dowolnej pracy
który stanowił część
początkowej bloku.
LifecycleStartEffect {
// ON_START code is executed here
onStopOrDispose {
// do any needed clean up here
}
}
Cykl życia
LifecycleResumeEffect
działa tak samo jak
LifecycleStartedEffect
, ale uruchamia się Lifecycle.Event.ON_RESUME
. Udostępnia też blok onPauseOrDispose
, który wykonuje
wyczyścić dane.
LifecycleResumeEffect {
// ON_RESUME code is executed here
onPauseOrDispose {
// do any needed clean up here
}
}