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