Tänapäeval on praktiliselt võimatu arendada moodsat Androidi rakendust, mis ei vaja visuaalse sisu kuvamist. Olenemata sellest, kas me räägime tootefotodest e-kaubanduse saidil, kasutajate avataridest või lihtsatest dekoratiivelementidest, on piltide laadimine igapäevane vajadus. Kuigi see võib tunduda lihtsa ülesandena, võib asünkroonse otsingu, vahemällu salvestamise ja teisenduste haldamine muutuda tõeliseks peavaluks, kui proovite seda nullist teha.
Selleks, et meie rakendus ei muutuks RAM-i raiskajaks ega jätaks kasutajaid tühja ekraani jõllitama, on meie eest raske töö ära teinud mitu teeki. Sellega seoses on meil kogenud veteranid nagu Glide, Picasso ja Fresco ning uuem tegija, mis on oma moodsa lähenemisega ökosüsteemi revolutsiooniliselt muutnud: Coil . Vaatame lähemalt, milline neist väärib jõudluse ja funktsioonide põhjal teie projektis kohta.
Veteranide ökosüsteem: Glide, Picasso ja Fresco
Kui meie eesmärk on vastupidavus, jäävad need kolm valikut valdkonna nurgakivideks. Picasso on ideaalne valik neile, kes otsivad minimalismi; see on kerge, väikese mälumahuga ja sobib suurepäraselt tavalisteks kasutusjuhtudeks, kus me ei soovi APK suurust suurendada. Teisest küljest positsioneerib Glide end universaalse valikuna, pakkudes väga võimsat funktsionaalsust ja tohutut paindlikkust teisenduste tegemisel, ehkki suurema teegi suuruse hinnaga.
Siis on meil Facebooki pakkumine Fresco . Selle peamine eelis on see, et see käsitleb Java-st väljaspool olevaid pilte , vähendades drastiliselt kardetud OutOfMemory vigade esinemist, muutes selle ideaalseks valikuks väga vanade seadmete või äärmiselt keerukate liideste jaoks. See nõuab aga omaenda komponendi SimpleDraweeView kasutamist, mis muudab selle teistest veidi spetsialiseeritumaks.
Vahemälu ja mälu analüüs
Kasutajakogemuse seisukohast on mängu võit või kaotus andmetöötluses. Picasso kasutab lihtsat lähenemisviisi, kus LRU vahemälu hõivab umbes 15% saadaolevast RAM-ist, kohandades ketast automaatselt. Glide seevastu on palju keerukam ja kasutab nelja vahemälu taset : alates ekraanil nähtavatest aktiivsetest ressurssidest kuni kettal olevate algsete toorandmeteni, võimaldades isegi kohandatud signatuuride kasutamist sama pildi versioonide eristamiseks.
Fresco kasutab kolmekihilist süsteemi, mis haldab dekodeeritud bitikaarte ja kodeeritud mälu. See arhitektuur võimaldab palju sujuvamat kerimisjõudlust , eriti lõputute, sadade piltidega voogude käsitlemisel, kuna ImagePipeline pakub vahemälu tühjendamise üle väga täpset kontrolli.
Mähise väljakutse: uus standard Kotlinis
Coil on saabunud, et maastikku värskendada. Erinevalt oma eelkäijatest loodi Coil spetsiaalselt Kotlini jaoks , mille tulemuseks on palju puhtam ja kokkuvõtlikum kood. Selle peamine konkurentsieelis on äärmiselt kerge kaal, mis kasutab ära teeke, mis enamikul arendajatel on juba installitud, näiteks Coroutines ja OkHttp , vältides seeläbi tarbetuid duplikaatsõltuvusi.
Jetpack Compose'i keskkonnas särab Coil AsyncImage elemendiga , mis võimaldab pilte URL-ist hämmastava lihtsusega laadida, delegeerides kogu võrgu- ja vahemällu salvestamise loogika teeki ilma, et arendaja peaks lõputult koodiridu kirjutama.
Jõudluse võrdlusnäitajad: kes on kiirem?
Kui proovime numbreid päris seadmel (näiteks Pixel 3-l), on tulemused paljastavad. Tühja vahemäluga piltide võrgust allalaadimisel on Glide tavaliselt laadimisaja poolest parim , olles kiireim tervete loendite töötlemisel. Picasso ja Coil säilitavad sarnase taseme, kuigi Coil võib oma varasemates versioonides suurte loendite laadimisel esineda teatavat ebajärjekindlust.
Kui lülitame vahemälust laadimisele , on erinevus silmatorkav. Glide paistab taas silma uskumatult kiirete aegadega, millele järgneb Coil väga tihedalt kannul. Selles stsenaariumis jääb Picasso märkimisväärselt maha, olles konkurentidest märgatavalt aeglasem. See näitab, et kui teie rakendus sõltub kriitiliselt kohesest reageerimisajast pildi uuesti vaatamisel, on Glide või Coil loogiline valik.
Ümberkujundamised, animatsioonid ja lisad
Visuaalse töötlemise osas on Glide tõeline koletis: see pakub natiivset tuge GIF-idele ja täiustatud teisendustele, nagu nurkade ümardamine ja keskelt kärpimine, ilma igasuguse vaevata. Picasso on selles osas piiratum ja keerukate efektide saavutamiseks on sageli vaja kolmandate osapoolte laiendusi. Fresco seevastu võimaldab teil defineerida palju teisendusi otse kujunduse XML-is , mis kiirendab küljendamisprotsessi.
Animatsioonide osas rakendab Glide vaikimisi ristläbivalgustuse efekti , mis muudab piltide üleminekud sujuvaks. Ka Coil saab sellega elegantselt hakkama tänu integratsioonile moodsa Androidi ökosüsteemiga. Neile, kes vajavad täielikku kontrolli, võimaldab Glide kasutada RequestListenereid kohandatud animatsioonide käivitamiseks kohe, kui ressurss on valmis.
Õige otsuse tegemiseks peame arvestama, et Glide on enamiku stsenaariumide korral kõige võimsam ja kiireim valik, ideaalne meediamahukate rakenduste jaoks. Coil on nutikas valik tänapäevaste Kotlini projektide jaoks, mis seavad esikohale puhta koodi ja kerge jõudluse . Picasso on endiselt kasulik väga lihtsate rakenduste jaoks ja Fresco on elupäästja, kui RAM on vanemate seadmete peamine pudelikael.
