Transitions de shell

L'introduction des transitions de shell a permis de consolider et de codifier la méthode d'exécution des animations dans le système, ce qui permet de récupérer des informations centralisées sur les animations prévues pour l'exécution.

La trace de transition inclut des données sur chaque transition dans le shell WindowManager (WM), à la fois à partir du serveur système et du shell. Droidfood active définitivement cette trace et l'intègre automatiquement dans les rapports de bug.

Pour en savoir plus sur la collecte de traces, consultez Transitions de shell.

Le visualiseur de transitions de Winscope affiche ces informations pour les traces de transition qui contiennent des informations côté serveur et côté client. Le visualiseur inclut une vue de journal de table à gauche, qui affiche des informations de transition de haut niveau, et une vue détaillée à droite pour chaque transition :

Analyse de la trace de transition du shell

Figure 1. Analyse des traces de transition de shell.

Vue Tableau

La vue Tableau contient les éléments suivants :

  • Id : ID de transition généré uniquement pour le débogage.
  • Type : type de transition, tel que défini dans Transitions.java.
  • Send Time (Heure d'envoi) : horodatage de l'envoi de la transition du serveur au shell pour traitement.
  • Dispatch Time (Heure de distribution) : horodatage de la distribution de la transition au gestionnaire pour le démarrage de la lecture.
  • Duration (Durée) : temps nécessaire à la transition pour passer du début de la lecture à la fin.
  • Status (État) : si la transition était :
    • PLAYED (LUE) : : lue.
    • ABORTED (ABORTÉE) : abandonnée avant la lecture. Une transition peut être abandonnée du côté du shell ou du WM.
    • MERGED (FUSIONNÉE) : fusionnée par le gestionnaire de transition dans une autre transition déjà en cours de lecture (le gestionnaire décide comment gérer cela).

Vue détaillée

En plus des détails de la vue Tableau, la vue détaillée de la transition dans la section SELECTED TRANSITION (TRANSITION SÉLECTIONNÉE) contient les éléments suivants :

  • handler : gestionnaire de transition qui a géré cette animation.
  • createTimeNs : horodatage de la création de la transition côté serveur WM.
  • finishTimeNs: horodatage de la notification au côté serveur WM de la fin de l'exécution de la transition côté shell.
  • endTransactionId: transaction SurfaceFlinger finale incluse dans cette transition.
  • startTransactionId: transaction SurfaceFlinger initiale incluse dans cette transition.
  • targets : liste des participants à la transition.
  • type : type de transition, tel que défini dans Transitions.java.

Cibles

Les cibles sont les éléments impliqués dans la transition, généralement des activités ou des tâches. Pour chaque cible, les informations suivantes sont enregistrées :

  • layerId : calque animé (à partir de la hiérarchie SurfaceFlinger).
  • mode : type d'animation effectuée sur ce calque.
  • windowId : fenêtre animée (à partir de la hiérarchie WindowManager).
  • flags : nouvel ensemble d'indicateurs appliqué au calque.