Hvorfor ViewModel overlever rotation
Bevar state gennem konfigurationsændringer.
Hvorfor ViewModel overlever rotation er en gratis Jetpack Compose Academy-lektion på CoddyKit. Dette er lektion 1 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Jetpack Compose Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Jetpack Compose Academy-kurset indeholder 4 lektioner i alt.
Rotationsproblemet
Roter skærmen, så ødelægger Android din Activity og sletter al tilstand, du gemte i den. Din tæller, tekst og rulleposition forsvinder. 😵
Konfigurationsændringer
Rotation er én af mange konfigurationsændringer: skift af tema, ændring af lokalitet og ændring af vinduets størrelse genskaber alle din skærm på samme måde.
Introduktion til ViewModel
En ViewModel er en klasse, der er bygget til at holde brugergrænsefladens tilstand i længere tid end den Activity, den betjener, så en rotation ikke længere smider dine data væk.
class CounterViewModel : ViewModel() {
var count = 0
}Knyttet til skærmen, ikke Activity
ViewModel er afgrænset til skærmens livscyklusejer, så den samme instans gives tilbage til den genskabte Activity i stedet for at oprette en ny.
Sådan overlever den
Android opbevarer ViewModel i et bevaret lager under konfigurationsændringen og forbinder den derefter automatisk med din helt nye Activity.
Når den ryddes
En ViewModel lever, indtil skærmen er helt afsluttet. Når brugeren navigerer væk for sidste gang, køres onCleared(), så du kan frigive ressourcer.
override fun onCleared() {
// cancel jobs, close streams
}Ikke til alt
ViewModel overlever rotation, men ikke procesafslutning. Til det kan du kombinere den med SavedStateHandle, så kritiske værdier kan gendannes senere.
Tilføj afhængigheden
Du får ViewModel-understøttelse fra livscyklusbibliotekerne. Tilføj artefaktet lifecycle-viewmodel-compose, så Compose nemt kan hente en.
implementation("androidx.lifecycle:lifecycle-viewmodel-compose:2.8.0")Adskillelse af ansvar
Ud over at overleve konfigurationsændringer holder en ViewModel logikken ude af din brugergrænseflade. Dine Composable-funktioner fokuserer på at tegne, mens ViewModel ejer tilstanden.
En mental model
Tænk på ViewModel som en stille scenemester bag kulisserne: Activity kommer og går, men scenemesteren holder din forestillings tilstand klar til endnu en opførelse.
Hvorfor det betyder noget
Når rotation overleves, mister brugerne aldrig deres fremskridt midt i en opgave. Denne pålidelighed er fundamentet, som enhver robust Compose-app bygges på. ✨
Hurtigt tjek
Test din forståelse af, hvorfor en ViewModel overlever en rotation.
Opsummering
Rotation genskaber din Activity, men en ViewModel overlever konfigurationsændringer og tilsluttes igen, så brugergrænsefladens tilstand bevares, og logikken holdes ude af brugergrænsefladen.
Lær Kotlin med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 30
- Lektioner
- 120
Ofte stillede spørgsmål
Er lektionen “Hvorfor ViewModel overlever rotation” gratis?
Ja — hele teksten til “Hvorfor ViewModel overlever rotation” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Jetpack Compose Academy-kurset, skal du opgradere til CoddyKit PRO. Jetpack Compose Academy-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Hvorfor ViewModel overlever rotation”?
Bevar state gennem konfigurationsændringer. Du øver dig i Jetpack Compose Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Jetpack Compose Academy?
Der kræves ingen tidligere erfaring. Jetpack Compose Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 1 af 4.
Hvor lang tid tager lektionen “Hvorfor ViewModel overlever rotation”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Jetpack Compose Academy-lektion?
Ja. Alle Jetpack Compose Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Hvorfor ViewModel overlever rotation
- viewModel() i en Composable
- Modellering af en UiState-dataklasse
- collectAsStateWithLifecycle