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
}
}