Integracja cyklu życia z tworzeniem

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 podstawie Lifecycle.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
 
}
}