Sobes.tech
Middle

Que signifie si le profileur indique qu'une trame a pris 120 millisecondes?

sobes.tech IA

Réponse de l'IA

Cela signifie que le rendu de cette image (dessin et affichage à l'écran) a pris 120 millisecondes.

L'interface Android se met à jour à une fréquence d'environ 60 images par seconde, ce qui correspond à environ 16 millisecondes par image (1000 ms / 60 images ≈ 16,67 ms/image).

Si une image prend 120 ms, cela dépasse largement le temps autorisé et entraîne des sauts d'images, perçus visuellement comme un "ralenti" ou des décalages dans l'interface utilisateur.

Les causes peuvent être diverses :

  • Trop de travail dans le thread principal (UI Thread) : Opérations longues, telles que requêtes réseau, travail avec des bases de données, calculs complexes ou traitement intensif d'images, effectuées dans le thread principal.
  • Redessiner (Overdraw) : Trop de couches de dessin sur un seul pixel d'écran.
  • Dispositions complexes (Layout Complexity) : Profondeur de la hiérarchie ViewGroups ou utilisation de dispositions non standard nécessitant beaucoup de travail pour mesurer et positionner les éléments.
  • Grand nombre de composants View : Dessiner trop de View dans une seule image, surtout dans des listes (RecyclerView, ListView), si elles ne sont pas optimisées.
  • Problèmes de "garbage" (Garbage Collection) : Pauses fréquentes ou prolongées pour la collecte de déchets.

Pour résoudre le problème, il faut utiliser le Profiler d'Android Studio pour une analyse plus détaillée de l'image et identifier les sections spécifiques du code ou opérations qui prennent beaucoup de temps.

Exemples d'optimisation :

  • Déplacer les opérations longues dans des threads en arrière-plan (en utilisant Kotlin Coroutines, RxJava, ExecutorService, etc.).
  • Optimiser la hiérarchie des dispositions.
  • Utiliser ConstraintLayout.
  • Optimiser les listes (RecyclerView) : utiliser ViewHolder, gérer correctement les éléments, faire du pooling de Views.
  • Combattre l'Overdraw (avec l'outil GPU Overdraw).
  • Optimiser le traitement des images (en utilisant des bibliothèques comme Coil, Glide, Picasso).