Middle
O que significa se o perfilador mostrar que um quadro levou 120 milissegundos?
sobes.tech IA
Resposta da IA
Isto significa que a renderização deste quadro (desenho e exibição na tela) levou 120 milissegundos.
A interface Android atualiza-se a uma frequência de aproximadamente 60 quadros por segundo, o que corresponde a cerca de 16 milissegundos por quadro (1000 ms / 60 quadros ≈ 16,67 ms/quadro).
Se um quadro demora 120 ms, excede significativamente o tempo permitido e provoca saltos de quadros, que são percebidos visualmente como "atraso" ou "lag" na interface do utilizador.
As causas podem variar:
- Demasiado trabalho no thread principal (UI Thread): Operações longas, como pedidos de rede, trabalho com bases de dados, cálculos complexos ou processamento intensivo de imagens, são realizadas no thread principal.
- Redesenho (Overdraw): Demasiadas camadas de desenho num único píxel de ecrã.
- Layouts complexos (Layout Complexity): Profundidade na hierarquia de ViewGroups ou uso de layouts não padrão que requerem muito trabalho para medir e posicionar os elementos.
- Grande quantidade de componentes View: Desenhar demasiados View num único quadro, especialmente em listas (RecyclerView, ListView), se não estiverem otimizados.
- Problemas com "garbage" (Garbage Collection): Pausas frequentes ou prolongadas para a recolha de lixo.
Para resolver o problema, é necessário usar o Profiler do Android Studio para uma análise mais detalhada do quadro e identificar as secções específicas do código ou operações que consomem muito tempo.
Exemplos de otimização:
- Mover operações longas para threads em segundo plano (usando
Kotlin Coroutines,RxJava,ExecutorService, etc.). - Otimizar a hierarquia de layouts.
- Usar
ConstraintLayout. - Otimizar listas (
RecyclerView): usarViewHolder, gerir corretamente os elementos, fazer pooling de Views. - Combater o Overdraw (com a ferramenta GPU Overdraw).
- Otimizar o trabalho com imagens (usando bibliotecas como Coil, Glide, Picasso).