Jetpack Compose Academy · Lektion

Udskydning af state-læsninger

Læs state sent for at begrænse recomposition-området.

Lektion 3 af 413 trin

Udskydning af state-læsninger er en gratis Jetpack Compose Academy-lektion på CoddyKit. Dette er lektion 3 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.

Det koster at læse tilstand

Hvert sted, hvor du læser en Compose-tilstandsværdi, bliver abonnent. Når tilstanden ændres, rekombineres alle læsere.

Rekombinationsområde

Den nærmeste omsluttende Composable, der læser en tilstand, er dens rekombinationsområde. Læser du højt oppe, bliver meget tegnet igen samlet.

Læs længere nede, tegn mindre igen

Hvis du læser tilstand dybere nede, rekombineres kun den lille Composable. Ved at flytte læsningen ned mindsker du mængden af arbejde.

Lambda-tricket

Send en lambda, der returnerer værdien, i stedet for selve værdien. Så sker læsningen senere i et smallere område.

Box(Modifier.offset { IntOffset(0, scroll.value) })

Eksempel med Modifier.offset

Lambdaen offset læser rullepositionen under layoutfasen, ikke under kompositionen, så animation af den helt undgår rekombination.

Udskyd med derivedStateOf

derivedStateOf beregner kun igen, når resultatet faktisk ændrer sig, så en kilde, der ændrer sig ofte, opdaterer læsere langt sjældnere.

val showButton by remember { derivedStateOf { scroll.value > 100 } }

Fjern støjen

Uden derivedStateOf tegnes en knap, der læser rå rulleposition, igen for hver pixel. Med den rekombineres knappen kun, når boolean-værdien skifter.

Undgå at læse i forælderen

Hvis du læser tilstand i en forælder kun for at sende den videre, tvinger det forælderen og alle søskende til at rekombinere. Send i stedet selve tilstandsobjektet.

Send tilstand, ikke værdi

Giv et underordnet element hele State-objektet, og lad det læse fra det selv. Forælderen forbliver stabil, mens det underordnede element opdateres alene.

Lazy-lister elsker udskydelse

I en LazyColumn forhindrer udskudte læsninger, at rulle-opdateringer kører indholdet af elementerne igen, så lange lister forbliver flydende.

Læs sent, kør mindre

Den grundlæggende vane er enkel: udskyd det tidspunkt, hvor du læser tilstand, indtil det mindst mulige område har brug for den.

Hurtigt tjek

Bekræft, at du har forstået idéen med udskydelse.

Opsummering: Udskyd læsningen

Læs tilstand i det mindste område, brug lambda-modifikatorer og derivedStateOf, og send State-objekter nedad for at holde gentegninger små. ✅

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 “Udskydning af state-læsninger” gratis?

Ja — hele teksten til “Udskydning af state-læsninger” 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 “Udskydning af state-læsninger”?

Læs state sent for at begrænse recomposition-området. 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 3 af 4.

Hvor lang tid tager lektionen “Udskydning af state-læsninger”?

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. Stabile kontra ustabile parametre
  2. Spring over, @Stable og @Immutable
  3. Udskydning af state-læsninger
  4. Layout Inspector og antal recompositions
← Tilbage til Jetpack Compose Academy