Cykl życia elementów kompozycyjnych

Na tej stronie dowiesz się więcej o cyklu życia funkcji kompozycyjnej i o tym, jak Compose decyduje, czy funkcja kompozycyjna wymaga ponownego utworzenia.

Omówienie cyklu życia

Jak wspomnieliśmy w dokumentacji dotyczącej zarządzania stanem, kompozycja opisuje interfejs aplikacji i jest tworzona przez uruchamianie funkcji kompozycyjnych. Kompozycja to struktura drzewa funkcji kompozycyjnych, które opisują interfejs.

Gdy Jetpack Compose uruchamia funkcje kompozycyjne po raz pierwszy, podczas początkowej kompozycji śledzi funkcje kompozycyjne, które wywołujesz, aby opisać interfejs w kompozycji. Gdy stan aplikacji się zmieni, Jetpack Compose zaplanuje ponowne komponowanie. Ponowne komponowanie to ponowne wykonywanie przez Jetpack Compose funkcji kompozycyjnych, które mogły ulec zmianie w odpowiedzi na zmiany stanu, a następnie aktualizowanie kompozycji w celu odzwierciedlenia tych zmian.

Kompozycję można utworzyć tylko na podstawie kompozycji początkowej i zaktualizować przez ponowne skomponowanie. Kompozycję można modyfikować tylko przez ponowne komponowanie.

Diagram przedstawiający cykl życia komponentu
Rysunek 1. Cykl życia funkcji kompozycyjnej w kompozycji. Wchodzi w kompozycję, jest ponownie komponowany 0 lub więcej razy i opuszcza kompozycję.

Ponowne komponowanie jest zwykle wywoływane przez zmianę obiektu State<T>. Funkcja Compose śledzi te elementy i uruchamia wszystkie funkcje kompozycyjne w kompozycji, które odczytują ten konkretny State<T>, oraz wszystkie funkcje kompozycyjne, które wywołują i których nie można pominąć.

Jeśli funkcja kompozycyjna jest wywoływana wiele razy, w kompozycji umieszczanych jest wiele jej instancji. Każde połączenie ma własny cykl życia w kompozycji.

@Composable
fun MyComposable() {
    Column {
        Text("Hello")
        Text("World")
    }
}

Diagram przedstawiający hierarchiczne ułożenie elementów w poprzednim fragmencie kodu
Rysunek 2. Reprezentacja MyComposable w kompozycji. Jeśli funkcja kompozycyjna jest wywoływana wiele razy, w kompozycji umieszczanych jest wiele jej instancji. Element o innym kolorze wskazuje, że jest to osobna instancja.

Anatomia funkcji kompozycyjnej w Composition

Wystąpienie funkcji kompozycyjnej w kompozycji jest identyfikowane przez miejsce wywołania. Kompilator Compose traktuje każde miejsce wywołania jako odrębne. Wywoływanie funkcji kompozycyjnych z wielu miejsc wywołania spowoduje utworzenie w kompozycji wielu instancji funkcji kompozycyjnej.