drawWithCache ja suorituskyky
Välttäkää piirto-olioiden luomista uudelleen jokaisella kehyksellä.
drawWithCache ja suorituskyky on ilmainen Jetpack Compose Academy-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Jetpack Compose Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Jetpack Compose Academy-kurssilla on yhteensä 4 oppituntia.
Piirtäminen suoritetaan usein
Canvas-lambdasi voi suorittua jokaisella ruudulla. Raskaiden objektien rakentaminen kerta toisensa jälkeen heikentää suorituskykyä huomaamatta.
Kalliit objektit
Path-polun, Brush-siveltimen ja Paint-objektin kaltaisten asioiden luominen ei ole ilmaista. Niiden varaaminen jokaisella piirrolla tuhlaa työtä, jota GPU ei olisi tarvinnut tehdä.
drawWithCache käyttöön
drawWithCache-muunnin mahdollistaa kalliiden objektien rakentamisen kerran ja niiden uudelleenkäytön. Se erottaa alustuksen varsinaisesta piirrosta.
Modifier.drawWithCache {
// build once here
onDrawBehind { /* draw each frame */ }
}Build-lohko suoritetaan harvoin
cache block -lohkon koodi suoritetaan uudelleen vain, kun koko tai lukemasi tila muuttuu. Sijoita Path- ja Brush-objektien luonti tähän lohkoon.
Modifier.drawWithCache {
val brush = Brush.linearGradient(colors)
onDrawBehind { drawRect(brush) }
}onDrawBehind
Käytä onDrawBehind-kutsua piirtääksesi Composable-sisällön taakse. Se antaa käyttöösi DrawScopen, joka suoritetaan edullisesti jokaisella ruudulla.
onDrawBehind {
drawCircle(color = Color.Blue)
}onDrawWithContent
Haluatko yhdistää oman grafiikkasi varsinaiseen käyttöliittymään? onDrawWithContent mahdollistaa piirtämisen, drawContent-kutsun ja uuden piirtämisen sen ympärille.
onDrawWithContent {
drawContent()
drawRect(color = Color.Black, alpha = 0.2f)
}Aseta Path välimuistiin
Kaavion Path-polun välimuistiin tallentaminen on klassinen optimointi. Rakenna se kerran cache block -lohkossa ja kutsu sitten vain drawPath-funktiota jokaisella ruudulla ilman uudelleenrakentamista.
val path = Path().apply { /* shape */ }
onDrawBehind { drawPath(path, Color.Green) }Reagoi kokoon
Voit lukea size-arvon turvallisesti cache block -lohkon sisällä. Kun canvasin koko muuttuu, lohko suoritetaan uudelleen ja objektit rakennetaan sopiviksi.
Vältä tilan lukemista piirrossa
Tilan lukeminen piirtämisen aikana voi aiheuttaa ylimääräistä työtä. Pidä draw block -lohko kevyenä ja siirrä alustus sen sijaan cache block -lohkoon.
Mittaa, älä arvaa
Profiloi ennen optimointia. Layout Inspector ja ruutuajat kertovat, mikä todella nykii, joten voit korjata oikean ongelman.
Käytä uudelleen aina kun mahdollista
Kultainen sääntö: rakenna raskaat objektit kerran ja käytä niitä uudelleen. drawWithCache tekee tästä mallista helpon ja animaatioista sulavan pehmeitä.
Pikatarkistus
Missä kallis Brush kannattaa luoda, jotta sitä ei rakenneta uudelleen jokaisella ruudulla?
Kertaus
Opit pitämään piirtämisen nopeana: rakenna raskaat objektit drawWithCache-lohkossa, piirrä edullisesti onDrawBehind-kutsulla ja mittaa aina ensin. Sulavia ruutuja! ⚡
Opi Kotlin tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 30
- Oppitunnit
- 120
Usein kysytyt kysymykset
Onko oppitunti ”drawWithCache ja suorituskyky” ilmainen?
Kyllä – oppitunnin ”drawWithCache ja suorituskyky” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Jetpack Compose Academy-kurssin, päivitä CoddyKit PROhon. Jetpack Compose Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”drawWithCache ja suorituskyky”?
Välttäkää piirto-olioiden luomista uudelleen jokaisella kehyksellä. Harjoittelet Jetpack Compose Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Jetpack Compose Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Jetpack Compose Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.
Kuinka kauan ”drawWithCache ja suorituskyky”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Jetpack Compose Academy-oppitunnilla?
Kyllä. Jokainen Jetpack Compose Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- DrawScope: viivat, suorakulmiot ja ympyrät
- Polut, liukuvärit ja sekoitustilat
- drawWithCache ja suorituskyky
- Reaaliaikaisen edistymärenkaan rakentaminen