Recomposition forklaret
Se, hvordan Compose opdaterer brugergrænsefladen.
Recomposition forklaret er en gratis Android Academy-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Android Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Android Academy-kurset indeholder 4 lektioner i alt.
Hvad er rekombination?
Rekombination er, når Compose kører dine composable-funktioner igen for at opdatere brugergrænsefladen, når den tilstand, de læser, ændres. Det er sådan, skærmen holdes synkroniseret med dine data.
Udløses af tilstandslæsninger
Compose holder styr på, hvilke composables der læser hvilken tilstand. Når en tilstandsværdi ændres, planlægges kun de composables, der læste den, til rekombination.
Intelligent og selektiv
Rekombination er selektiv: Compose forsøger at køre så lidt som muligt igen. En ændring i én del af tilstanden tegner ikke hele skærmen igen — kun de dele, der afhænger af den.
Spring over
Hvis en composables input ikke er ændret, kan Compose helt springe over at køre den igen. Det holder rekombination billig, selv på komplekse skærme.
Composables kører ofte
Da rekombination kan ske ofte og i vilkårlig rækkefølge, skal dine composables være sikre at køre igen. Mange kald skal give den samme brugergrænseflade for den samme tilstand.
Undgå sideeffekter
Udfør ikke sideeffekter (netværkskald, skrivning af filer eller ændring af delte variabler) direkte i en composable-krop. De kan blive udført ved hver rekombination. Brug i stedet tilstands- og effekt-API'er.
// BAD: runs on every recomposition
@Composable
fun Bad() {
saveToDatabase()
Text("Hi")
}Uafhængighed af rækkefølge
Du kan ikke regne med, at composables kører i en bestemt rækkefølge eller på en bestemt tråd. Behandl hvert kald som uafhængigt. Det er denne frihed, der lader Compose optimere så effektivt.
Læsning kontra ingen læsning
Det er kun composables, der læser en tilstand, der rekombineres, når den ændres. Hvis en Text aldrig læser count, forbliver den uændret, når count ændres.
@Composable
fun Demo() {
var count by remember { mutableStateOf(0) }
Text("Static") // never recomposes from count
Text("Count: $count") // recomposes when count changes
Button(onClick = { count++ }) { Text("+") }
}Rekombinationssløjfer, du skal undgå
Skrivning til tilstand under komposition (ikke inde i en hændelse) kan medføre en uendelig rekombinationssløjfe. Opdatér kun tilstand fra tilbagekald som onClick, aldrig direkte i kroppen.
Det føles automatisk
Fra dit synspunkt er rekombination automatisk. Du erklærer brugergrænsefladen som en funktion af tilstanden, ændrer tilstanden i tilbagekald, og Compose sørger for at køre de rigtige composables igen.
Sæt det hele sammen
Denne tæller demonstrerer rekombination: Et tryk ændrer count, Compose kører den læsende Text igen, og det nye tal vises.
@Composable
fun Counter() {
var count by remember { mutableStateOf(0) }
Button(onClick = { count++ }) {
Text(text = "Count: $count")
}
}Hurtigt tjek
Hvornår rekombinerer Compose en composable?
Opsummering
Det vigtigste om rekombination:
- Tilstandsændringer får de composables, der læser tilstanden, til at køre igen.
- Det sker selektivt, og uændrede composables kan springes over.
- Composables skal være fri for sideeffekter og sikre at køre igen i vilkårlig rækkefølge.
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
- 36
- Lektioner
- 152
Ofte stillede spørgsmål
Er lektionen “Recomposition forklaret” gratis?
Ja — alle 3 lektioner i læringssporet Android Academy, inklusive “Recomposition forklaret”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Android Academy-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Recomposition forklaret”?
Se, hvordan Compose opdaterer brugergrænsefladen. Du øver dig i Android 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å Android Academy?
Der kræves ingen tidligere erfaring. Android 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 2 af 4.
Hvor lang tid tager lektionen “Recomposition forklaret”?
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 Android Academy-lektion?
Ja. Alle Android 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
- State med remember og mutableStateOf
- Recomposition forklaret
- State hoisting
- rememberSaveable