Jetpack Compose Academy · Lektion

Hvorfor ViewModel overlever rotation

Bevar state gennem konfigurationsændringer.

Lektion 1 af 413 trin

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.

Gratis at komme i gang

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

  1. Hvorfor ViewModel overlever rotation
  2. viewModel() i en Composable
  3. Modellering af en UiState-dataklasse
  4. collectAsStateWithLifecycle
← Tilbage til Jetpack Compose Academy