collectAsStateWithLifecycle
Observer ViewModel-tilstand trygt i Compose.
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.
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
- Hvorfor ViewModel overlever rotasjon
- viewModel() i en Composable
- Modellere en UiState-dataklasse
- collectAsStateWithLifecycle