Jetpack Compose Academy · Lekcja

collectAsStateWithLifecycle

Bezpiecznie obserwuj stan ViewModelu w Compose

Lekcja 4 z 413 kroki

collectAsStateWithLifecycle to bezpłatna lekcja Jetpack Compose Academy na CoddyKit. To lekcja 4 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 Jetpack Compose Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Jetpack Compose Academy zawiera 4 lekcji w sumie.

Obserwowanie Flow w Compose

Twój ViewModel udostępnia stan jako Flow, a Twój Composable musi przekształcić ten strumień w wartość, którą Compose może odczytywać i obserwować.

Sposób uwzględniający cykl życia

Użyj collectAsStateWithLifecycle(), aby zbierać StateFlow do stanu Compose z uwzględnieniem cyklu życia ekranu. 🔋

val ui by vm.state.collectAsStateWithLifecycle()

Dlaczego nie collectAsState

Zwykłe collectAsState() kontynuuje zbieranie nawet wtedy, gdy aplikacja działa w tle, niepotrzebnie zużywając zasoby. Wersja uwzględniająca cykl życia zamiast tego wstrzymuje zbieranie.

Zatrzymuje się w tle

Gdy ekran przestaje być aktywny, zbieranie również się zatrzymuje; gdy ekran wraca na pierwszy plan, zbieranie jest wznawiane. Oszczędza to baterię i zapobiega niepotrzebnym aktualizacjom.

Odczytywanie wyniku

Wywołanie zwraca State, który odczytujesz za pomocą by, otrzymując zwykłą wartość wywołującą ponowną kompozycję za każdym razem, gdy Flow emituje nową wartość.

val ui by vm.state.collectAsStateWithLifecycle()
Text(ui.title)

Dodawanie zależności

Ten pomocniczy element znajduje się w artefakcie runtime. Dodaj lifecycle-runtime-compose, aby funkcja była dostępna w Composable.

implementation("androidx.lifecycle:lifecycle-runtime-compose:2.8.0")

Wybór minimalnego stanu

Domyślnie zbieranie jest aktywne od stanu STARTED. Możesz obniżyć ten próg, ale STARTED to bezpieczny i zalecany wybór.

Współpracuje z StateFlow

Najlepiej sprawdza się z StateFlow, który zawsze przechowuje bieżącą wartość, dzięki czemu ekran ma co wyświetlić natychmiast po pojawieniu się.

Rozgałęzianie na podstawie stanu

Po zebraniu stanu rozgałęź działanie na podstawie UiState, aby renderować stan ładowania, powodzenie lub błąd — wszystko sterowane najnowszą emisją z ViewModel.

if (ui.isLoading) Spinner() else Content(ui.items)

Bezpieczniejsze niż ręczne zbieranie

Nie musisz już ręcznie uruchamiać ani anulować zbierania. Funkcja pomocnicza sama wiąże tę pracę z kompozycją i cyklem życia. ✨

Nowoczesne ustawienie domyślne

W przypadku nowych ekranów Compose zalecanym sposobem bezpiecznego i wydajnego obserwowania stanu ViewModel jest collectAsStateWithLifecycle().

Szybkie sprawdzenie

Sprawdź, dlaczego preferowany jest kolektor uwzględniający cykl życia.

Podsumowanie

Obserwuj stan ViewModel za pomocą collectAsStateWithLifecycle(): funkcja zbiera StateFlow do stanu Compose, wstrzymuje zbieranie w tle i stanowi nowoczesne ustawienie domyślne.

Bezpłatny start

Ucz się Kotlin dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
30
Lekcje
120

Często zadawane pytania

Czy lekcja „collectAsStateWithLifecycle” jest bezpłatna?

Tak — pełny tekst „collectAsStateWithLifecycle” 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 Jetpack Compose Academy, przejdź na CoddyKit PRO. Kurs Jetpack Compose Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „collectAsStateWithLifecycle”?

Bezpiecznie obserwuj stan ViewModelu w Compose Ćwiczysz Jetpack Compose 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ąć Jetpack Compose Academy?

Nie wymagamy żadnego doświadczenia. Jetpack Compose 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 4 z 4.

Ile czasu zajmuje lekcja „collectAsStateWithLifecycle”?

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 Jetpack Compose Academy?

Tak. Każda lekcja Jetpack Compose 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. Dlaczego ViewModel przetrwa obracanie ekranu
  2. viewModel() w funkcji Composable
  3. Modelowanie klasy danych UiState
  4. collectAsStateWithLifecycle
← Powrót do Jetpack Compose Academy