collectAsStateWithLifecycle
Observera ViewModel-state säkert i Compose.
collectAsStateWithLifecycle är en gratis lektion i Jetpack Compose Academy på CoddyKit. Detta är lektion 4 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Jetpack Compose Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Jetpack Compose Academy innehåller totalt 4 lektioner.
Observera ett Flow i Compose
Din ViewModel exponerar tillstånd som ett Flow, och din Composable behöver omvandla den strömmen till ett värde som Compose kan läsa och reagera på.
Det livscykelmedvetna sättet
Använd collectAsStateWithLifecycle() för att samla in ett StateFlow till Compose-tillstånd samtidigt som skärmens livscykel respekteras. 🔋
val ui by vm.state.collectAsStateWithLifecycle()Varför inte collectAsState
Vanliga collectAsState() fortsätter att samla in data även när appen är i bakgrunden, vilket slösar med arbete. Livscykelversionen pausar i stället.
Pausar i bakgrunden
När skärmen stoppas upphör även insamlingen; när den återkommer i förgrunden återupptas insamlingen. Det sparar batteri och förhindrar meningslösa uppdateringar.
Läs resultatet
Anropet returnerar ett State som du läser med by, vilket ger dig ett vanligt värde som utlöser omkomposition varje gång flödet avger ett nytt värde.
val ui by vm.state.collectAsStateWithLifecycle()
Text(ui.title)Lägg till beroendet
Den här hjälpfunktionen finns i en runtime-artefakt. Lägg till lifecycle-runtime-compose så att funktionen blir tillgänglig i dina Composables.
implementation("androidx.lifecycle:lifecycle-runtime-compose:2.8.0")Välj lägsta tillståndsnivå
Som standard är insamlingen aktiv när tillståndet är minst STARTED. Du kan sänka tröskeln, men STARTED är det säkra och rekommenderade valet.
Fungerar tillsammans med StateFlow
Det fungerar särskilt bra med StateFlow, som alltid innehåller ett aktuellt värde, så att skärmen har något att visa direkt när den visas.
Förgrena dig utifrån tillståndet
När tillståndet har samlats in kan du förgrena dig utifrån UiState för att rendera inläsning, lyckat resultat eller fel, allt styrt av den senaste emissionen från din ViewModel.
if (ui.isLoading) Spinner() else Content(ui.items)Säkrare än manuell insamling
Du slipper starta och avbryta insamlingen manuellt. Hjälpfunktionen kopplar arbetet till kompositionen och livscykeln åt dig. ✨
Det moderna standardvalet
För nya Compose-skärmar är collectAsStateWithLifecycle() det rekommenderade sättet att observera ViewModel-tillstånd säkert och effektivt.
Snabbtest
Kontrollera varför den livscykelmedvetna insamlaren föredras.
Sammanfattning
Observera ViewModel-tillstånd med collectAsStateWithLifecycle(): den samlar in ett StateFlow till Compose-tillstånd, pausar i bakgrunden och är det moderna standardvalet.
Lär dig Kotlin med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 30
- Lektioner
- 120
Vanliga frågor
Är lektionen ”collectAsStateWithLifecycle” gratis?
Ja – hela texten till ”collectAsStateWithLifecycle” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Jetpack Compose Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Jetpack Compose Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”collectAsStateWithLifecycle”?
Observera ViewModel-state säkert i Compose. Ni övar på Jetpack Compose Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Jetpack Compose Academy?
Du behöver inga förkunskaper. Utbildningen i Jetpack Compose Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 4 av 4.
Hur lång tid tar lektionen ”collectAsStateWithLifecycle”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Jetpack Compose Academy-lektionen?
Ja. Varje Jetpack Compose Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Varför ViewModel överlever rotation
- viewModel() i en Composable
- Modellera en UiState-dataklass
- collectAsStateWithLifecycle