Jetpack Compose Academy · leksjon

drawWithCache og ytelse

Unngå å bygge tegneobjekter på nytt for hver ramme.

Leksjon 3 av 413 trinn

drawWithCache og ytelse er en gratis leksjon i Jetpack Compose Academy på CoddyKit. Dette er leksjon 3 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Jetpack Compose Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Jetpack Compose Academy inneholder totalt 4 leksjoner.

Tegning kjører ofte

Canvas-lambdaen din kan kjøre på every frame. Hvis du bygger tunge objekter på nytt der, bilde etter bilde, reduserer det ytelsen ubemerket.

De kostbare objektene

Ting som Path, Brush og Paint er ikke gratis å opprette. Hvis du allokerer dem ved hver tegning, gjør du unødvendig arbeid som GPU-en aldri trengte.

Introduserer drawWithCache

Modifikatoren drawWithCache lar deg bygge kostbare objekter én gang og gjenbruke dem. Den skiller oppsettet fra selve tegningen.

Modifier.drawWithCache {
    // build once here
    onDrawBehind { /* draw each frame */ }
}

Byggeblokken kjører sjelden

Kode i cache block kjøres bare på nytt når størrelsen eller tilstanden du leser, endres. Legg opprettelsen av Path og Brush her.

Modifier.drawWithCache {
    val brush = Brush.linearGradient(colors)
    onDrawBehind { drawRect(brush) }
}

onDrawBehind

Bruk onDrawBehind til å tegne under innholdet i Composable-en. Du får en DrawScope som kjører på hvert bilde, med lav kostnad.

onDrawBehind {
    drawCircle(color = Color.Blue)
}

onDrawWithContent

Trenger du å blande kunsten din med selve brukergrensesnittet? onDrawWithContent lar deg tegne, kalle drawContent og tegne igjen rundt det.

onDrawWithContent {
    drawContent()
    drawRect(color = Color.Black, alpha = 0.2f)
}

Bufre Path

En Path for et diagram er et klassisk eksempel på en gevinst. Bygg den én gang i cache-blokken, og kall deretter bare drawPath på den i hvert bilde uten å bygge den på nytt.

val path = Path().apply { /* shape */ }
onDrawBehind { drawPath(path, Color.Green) }

Reager på størrelse

Inne i cache-blokken kan du trygt lese size. Når lerretet endrer størrelse, kjører blokken på nytt og bygger objektene slik at de passer.

Unngå tilstandslesing under tegning

Hvis du leser tilstand under tegningen, kan det utløse ekstra arbeid. Hold draw block enkel, og flytt oppsettet til cache-blokken i stedet.

Mål, ikke gjett

Profiler før du optimaliserer. Layout Inspector og tidsmålinger for bilder viser deg hva som faktisk hakker, slik at du løser riktig problem.

Gjenbruk overalt der du kan

Gullregelen er å bygge tunge objekter én gang og reuse dem. drawWithCache gjør dette mønsteret enkelt og animasjonene dine silkemyke.

Rask sjekk

Hvor bør du opprette en kostbar Brush slik at den ikke bygges på nytt i hvert bilde?

Oppsummering

Du har lært å holde tegningen rask: bygg tunge objekter i drawWithCache-blokken, tegn rimelig med onDrawBehind, og mål alltid først. Jevne bilder! ⚡

Gratis å komme i gang

Lær deg Kotlin med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
30
Leksjoner
120

Ofte stilte spørsmål

Er leksjonen «drawWithCache og ytelse» gratis?

Ja – hele teksten i «drawWithCache og ytelse» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Jetpack Compose Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Jetpack Compose Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «drawWithCache og ytelse»?

Unngå å bygge tegneobjekter på nytt for hver ramme. Du øver på Jetpack Compose Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Jetpack Compose Academy?

Ingen tidligere erfaring er nødvendig. Jetpack Compose Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.

Hvor lang tid tar leksjonen «drawWithCache og ytelse»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Jetpack Compose Academy-leksjonen?

Ja. Alle Jetpack Compose Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. DrawScope: Linjer, rektangler og sirkler
  2. Baner, gradienter og blandingsmoduser
  3. drawWithCache og ytelse
  4. Bygge en fremdriftsring i sanntid
← Tilbake til Jetpack Compose Academy