Sobes.tech
Middle

Čo znamená, ak profiler ukazuje, že jeden rám trval 120 milisekúnd?

sobes.tech AI

Odpoveď od AI

To znamená, že vykreslenie tohto snímku (kreslenie a zobrazenie na obrazovke) trvalo 120 milisekúnd.

Rozhranie Android sa aktualizuje približne 60 snímok za sekundu, čo zodpovedá približne 16 milisekundám na snímok (1000 ms / 60 snímok ≈ 16,67 ms/snímek).

Ak snímok trvá 120 ms, výrazne prekračuje povolený čas a vedie k strate snímok, čo je vizuálne vnímané ako "zaseknutie" alebo oneskorenia v používateľskom rozhraní.

Príčiny môžu byť rôzne:

  • Príliš veľa práce v hlavnom vlákne (UI Thread): Dlhé operácie, ako sú požiadavky na sieť, práca s databázami, zložité výpočty alebo intenzívne spracovanie obrázkov, sa vykonávajú v hlavnom vlákne.
  • Overdraw: Príliš veľa vrstiev kreslenia na jednom pixeli obrazovky.
  • Zložité rozloženia (Layout Complexity): Hlboká hierarchia ViewGroup alebo použitie nestandardných rozložení, ktoré vyžadujú veľa práce na meranie a umiestnenie prvkov.
  • Veľké množstvo komponentov View: Kreslenie príliš veľkého množstva View v jednom snímku, najmä v zoznamoch (RecyclerView, ListView), ak nie sú optimalizované.
  • Problémy s "smeti" (Garbage Collection): Časté alebo dlhé prestávky na zber odpadu.

Na vyriešenie problému je potrebné použiť profiler Android Studio na podrobnejšiu analýzu snímku a identifikáciu konkrétnych častí kódu alebo operácií, ktoré zaberajú veľa času.

Príklady optimalizácie:

  • Presunúť dlhé operácie do pozadia (pomocou Kotlin Coroutines, RxJava, ExecutorService a pod.).
  • Optimalizovať hierarchiu rozložení.
  • Použiť ConstraintLayout.
  • Optimalizovať zoznamy (RecyclerView): použiť ViewHolder, správne spravovať prvky, použiť pooling View.
  • Bojovať proti Overdraw (pomocou nástroja GPU Overdraw).
  • Optimalizovať prácu s obrázkami (pomocou knižníc ako Coil, Glide, Picasso).