0Pricing
Android Academy · Lekcja

Wyjaśnienie rekompozycji

Dowiedz się, jak Compose aktualizuje interfejs

Wyjaśnienie rekompozycji to bezpłatna lekcja Android Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Android Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Android Academy zawiera 4 lekcji w sumie.

Czym jest rekompozycja?

Rekompozycja polega na ponownym uruchomieniu przez Compose funkcji composable w celu zaktualizowania interfejsu, gdy zmieni się odczytywany przez nie stan. Dzięki temu ekran pozostaje zsynchronizowany z danymi.

Wywoływana przez odczyty stanu

Compose śledzi, które composable odczytują poszczególne stany. Gdy wartość stanu się zmieni, do rekompozycji są planowane tylko composable, które ją odczytały.

Inteligentna i wybiórcza

Rekompozycja jest wybiórcza: Compose stara się uruchamiać ponownie tylko niezbędne elementy. Zmiana jednej części stanu nie powoduje ponownego narysowania całego ekranu — tylko jego fragmentów, które od niej zależą.

Pomijanie

Jeśli dane wejściowe composable się nie zmieniły, Compose może całkowicie pominąć jego ponowne uruchamianie. Dzięki temu rekompozycja pozostaje tania nawet na złożonych ekranach.

Composable są uruchamiane często

Ponieważ rekompozycja może zachodzić często i w dowolnej kolejności, composable muszą być bezpieczne do ponownego uruchamiania. Wielokrotne wywołanie composable powinno tworzyć ten sam interfejs dla tego samego stanu.

Należy unikać efektów ubocznych

Nie należy wykonywać efektów ubocznych (wywołań sieciowych, zapisywania plików ani modyfikowania współdzielonych zmiennych) bezpośrednio w treści composable. Mogłyby być uruchamiane przy każdej rekompozycji. Zamiast tego należy używać stanu i interfejsów API efektów.

// BAD: runs on every recomposition
@Composable
fun Bad() {
    saveToDatabase()
    Text("Hi")
}

Niezależność od kolejności

Nie można zakładać, że composable zostaną uruchomione w określonej kolejności ani na określonym wątku. Każde wywołanie należy traktować niezależnie. Ta swoboda pozwala Compose na tak intensywną optymalizację.

Odczytywanie a nieodczytywanie

Po zmianie stanu rekompozycję przechodzą tylko composable, które go odczytują. Jeśli element Text nigdy nie odczytuje count, zmiana count pozostawi go bez zmian.

@Composable
fun Demo() {
    var count by remember { mutableStateOf(0) }
    Text("Static")          // never recomposes from count
    Text("Count: $count")    // recomposes when count changes
    Button(onClick = { count++ }) { Text("+") }
}

Pętle rekompozycji, których należy unikać

Zapisywanie stanu podczas kompozycji (a nie wewnątrz zdarzenia) może spowodować nieskończoną pętlę rekompozycji. Stan należy aktualizować wyłącznie w wywołaniach zwrotnych, takich jak onClick, a nigdy bezpośrednio w treści composable.

Działa automatycznie

Z Państwa perspektywy rekompozycja jest automatyczna. Deklarują Państwo interfejs jako funkcję stanu, zmieniają stan w wywołaniach zwrotnych, a Compose zajmuje się ponownym uruchomieniem właściwych composable.

Połączenie wszystkiego

Ten licznik pokazuje rekompozycję: dotknięcie przycisku zmienia count, Compose ponownie uruchamia odczytujący je element Text, a następnie pojawia się nowa liczba.

@Composable
fun Counter() {
    var count by remember { mutableStateOf(0) }
    Button(onClick = { count++ }) {
        Text(text = "Count: $count")
    }
}

Szybkie sprawdzenie

Kiedy Compose wykonuje rekompozycję composable?

Podsumowanie

Najważniejsze informacje o rekompozycji:

  • Zmiana stanu powoduje ponowne uruchomienie composable, które go odczytują.
  • Rekompozycja jest wybiórcza i może pomijać niezmienione composable.
  • Composable muszą być pozbawione efektów ubocznych i bezpieczne do ponownego uruchamiania w dowolnej kolejności.

Często zadawane pytania

Czy lekcja „Wyjaśnienie rekompozycji” jest bezpłatna?

Tak — pełny tekst „Wyjaśnienie rekompozycji” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Android Academy, przejdź na CoddyKit PRO. Kurs Android Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Wyjaśnienie rekompozycji”?

Dowiedz się, jak Compose aktualizuje interfejs Ćwiczysz Android Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Android Academy?

Nie wymagamy żadnego doświadczenia. Android Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.

Ile czasu zajmuje lekcja „Wyjaśnienie rekompozycji”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Android Academy?

Tak. Każda lekcja Android Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Stan z remember i mutableStateOf
  2. Wyjaśnienie rekompozycji
  3. Podnoszenie stanu
  4. rememberSaveable
← Powrót do Android Academy