Sobes.tech
Middle

Šta znači ako profiler pokazuje da je jedan okvir trajao 120 milisekundi?

sobes.tech АИ

Одговор од АИ

Ovo znači da je prikaz ovog okvira (crtanje i prikaz na ekranu) trajao 120 milisekundi.

Android interfejs se ažurira otprilike 60 frejmova u sekundi, što odgovara otprilike 16 milisekundi po frejmu (1000 ms / 60 frejmova ≈ 16,67 ms/frejm).

Ako trajanje jednog frejma iznosi 120 ms, to značajno premašuje dozvoljeno vreme i dovodi do preskakanja frejmova, što se vizuelno percipira kao "zastoje" ili kašnjenja u korisničkom interfejsu.

Razlozi mogu biti razni:

  • Previše posla u glavnom thread-u (UI Thread): Dugačke operacije poput zahteva ka mreži, rada sa bazama podataka, složenih kalkulacija ili intenzivne obrade slika, izvršavaju se u glavnom thread-u.
  • Overdraw: Previše slojeva crtanja na jednom pikselu ekrana.
  • Složeni rasporedi (Layout Complexity): Duboka hijerarhija ViewGroups ili korišćenje nestandardnih rasporeda koji zahtevaju mnogo rada za merenje i pozicioniranje.
  • Veliki broj View komponenti: Crtanje prevelikog broja View-ova u jednom frejmu, posebno u listama (RecyclerView, ListView), ako nisu optimizovani.
  • Problemi sa "smećem" (Garbage Collection): Česte ili duge pauze za sakupljanje smeća.

Za rešavanje problema potrebno je koristiti profiler Android Studio za detaljniju analizu frejma i identifikaciju specifičnih delova koda ili operacija koje oduzimaju mnogo vremena.

Primeri optimizacije:

  • Premestiti duge operacije u pozadinske thread-ove (korišćenjem Kotlin Coroutines, RxJava, ExecutorService i slično).
  • Optimizovati hijerarhiju rasporeda.
  • Koristiti ConstraintLayout.
  • Optimizovati liste (RecyclerView): koristiti ViewHolder, pravilno upravljati elementima, koristiti pooling View-ova.
  • Boriti se protiv Overdraw-a (pomoću GPU Overdraw alata).
  • Optimizovati rad sa slikama (korišćenjem biblioteka poput Coil, Glide, Picasso).