Jetpack Compose Academy · leksjon

collectAsStateWithLifecycle

Observer ViewModel-tilstand trygt i Compose.

Leksjon 4 av 413 trinn

collectAsStateWithLifecycle er en gratis leksjon i Jetpack Compose Academy på CoddyKit. Dette er leksjon 4 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Jetpack Compose Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Jetpack Compose Academy inneholder totalt 4 leksjoner.

Observere en Flow i Compose

ViewModel eksponerer tilstanden som en Flow, og Composable-en må gjøre denne strømmen om til en verdi som Compose kan lese og reagere på.

Den livssyklusbevisste måten

Bruk collectAsStateWithLifecycle() til å samle en StateFlow til Compose-tilstand samtidig som skjermens livssyklus respekteres. 🔋

val ui by vm.state.collectAsStateWithLifecycle()

Hvorfor ikke collectAsState

Vanlig collectAsState() fortsetter å samle inn selv når appen er i bakgrunnen, noe som sløser med ressurser. Livssyklusvarianten setter i stedet innsamlingen på pause.

Stopper i bakgrunnen

Når skjermen stopper, stopper også innsamlingen. Når den kommer tilbake i forgrunnen, fortsetter innsamlingen, noe som sparer batteri og unngår unødvendige oppdateringer.

Lese resultatet

Kallet returnerer en State som De leser med by, og gir Dem en vanlig verdi som utløser rekomponering hver gang strømmen sender ut en verdi.

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

Legg til avhengigheten

Denne hjelpefunksjonen ligger i en runtime-artifakt. Legg til lifecycle-runtime-compose slik at funksjonen blir tilgjengelig i Composable-ene.

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

Velge minste tilstand

Som standard er innsamlingen aktiv når tilstanden er minst STARTED. De kan senke terskelen, men STARTED er det trygge og anbefalte valget.

Fungerer sammen med StateFlow

Den fungerer spesielt godt med StateFlow, som alltid inneholder en gjeldende verdi, slik at skjermen har noe å vise med én gang den vises.

Velg gren basert på tilstanden

Når tilstanden er samlet inn, kan De velge gren i UiState for å gjengi lasting, suksess eller feil, alt styrt av den nyeste verdien fra ViewModel.

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

Tryggere enn manuell innsamling

De slipper å starte og avbryte innsamlingen manuelt. Hjelpefunksjonen knytter arbeidet til komposisjon og livssyklus for Dem. ✨

Det moderne standardvalget

For nye Compose-skjermer er collectAsStateWithLifecycle() den anbefalte måten å observere ViewModel-tilstand på, trygt og effektivt.

Kort sjekk

Kontroller hvorfor den livssyklusbevisste innsamleren foretrekkes.

Oppsummering

Observer ViewModel-tilstand med collectAsStateWithLifecycle(): Den samler en StateFlow til Compose-tilstand, setter innsamlingen på pause i bakgrunnen og er det moderne standardvalget.

Gratis å komme i gang

Lær deg Kotlin med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
30
Leksjoner
120

Ofte stilte spørsmål

Er leksjonen «collectAsStateWithLifecycle» gratis?

Ja – hele teksten i «collectAsStateWithLifecycle» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Jetpack Compose Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Jetpack Compose Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «collectAsStateWithLifecycle»?

Observer ViewModel-tilstand trygt i Compose. Du øver på Jetpack Compose Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Jetpack Compose Academy?

Ingen tidligere erfaring er nødvendig. Jetpack Compose Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 4 av 4.

Hvor lang tid tar leksjonen «collectAsStateWithLifecycle»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Jetpack Compose Academy-leksjonen?

Ja. Alle Jetpack Compose Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Hvorfor ViewModel overlever rotasjon
  2. viewModel() i en Composable
  3. Modellere en UiState-dataklasse
  4. collectAsStateWithLifecycle
← Tilbake til Jetpack Compose Academy