Transitions de shell

L'introduction des transitions shell a consolidé et codifié la méthode d'exécution des animations dans le système, permettant la récupération d'informations centralisées concernant 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 aux rapports de bug.

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

Le lecteur de transitions de Winscope affiche ces informations pour les traces de transition qui contiennent des informations côté serveur et côté client. Le lecteur inclut une vue du journal sous forme de tableau à gauche, qui affiche des informations générales sur les transitions, et une vue détaillée à droite pour chaque transition :

Analyse des traces de transition du shell

Figure 1 : Analyse des traces de transition du shell.

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.
  • Heure d'envoi : code temporel de la transition envoyée du serveur au shell pour être traitée.
  • Heure d'envoi : code temporel indiquant le moment où la transition est envoyée au gestionnaire pour commencer la lecture.
  • Durée : temps écoulé entre le début et la fin de la transition.
  • État : si la transition était :
    • JOUÉ : vous avez joué.
    • ABORTED : la lecture a été abandonnée avant le début. Une transition peut être abandonnée depuis le shell ou le gestionnaire de fenêtres.
    • MERGED : 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 affichés dans le tableau, la vue détaillée des transitions dans la section TRANSITION SÉLECTIONNÉE contient les informations suivantes :

  • handler : gestionnaire de transition qui a géré cette animation.
  • createTimeNs : code temporel de la création de la transition côté serveur WM.
  • finishTimeNs : code temporel indiquant le moment où le côté serveur WM est informé que la transition s'est terminée 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.

Objectifs

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 en cours d'animation (à partir de la hiérarchie WindowManager).
  • flags : nouvel ensemble de flags appliqués au calque.