Transitions de shell

L'introduction des transitions de shell a consolidé et codifié 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 qui se produit dans le shell WindowManager (WM), provenant à la fois du serveur système et du côté du shell. Cette trace est activée en permanence dans Droidfood et intégrée automatiquement aux rapports de bugs.

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

L'outil de visualisation des transitions de Winscope affiche ces informations pour les traces de transition contenant à la fois des informations côté serveur et côté client. L'aperçu se compose d'une vue de journal de table contenant des informations générales sur la transition à gauche et une vue détaillée de chaque transition à droite:

Analyse de la trace de transition de shell

Figure 1 : Analyse de la trace de transition de shell.

Tableau

La vue Tableau contient les éléments suivants:

  • Id:ID de transition généré uniquement à des fins de 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 gérée.
  • Dispatch Time (Heure de distribution) : code temporel de la transition envoyée au gestionnaire pour lancer la lecture.
  • Durée:durée de la transition entre le début de la lecture et la fin.
  • État:si la transition a été :
    • PLAYED : joué.
    • ABORTED: Arrêté avant la lecture. Une transition peut être interrompue du côté du shell ou de la fenêtre manager.
    • MERGED (FUSIONNÉ) : fusionné par le gestionnaire de transition avec une autre transition en cours de lecture (le gestionnaire décide de la façon dont il doit gérer cela).

Vue détaillée

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

  • 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 lorsque le côté serveur WM est informé que la transition a terminé son exécution 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, nous enregistrons les éléments suivants:

  • layerId: calque en cours d'animation (de la hiérarchie SurfaceFlinger).
  • mode: type d'animation effectuée sur cette couche.
  • windowId: fenêtre animée (de la hiérarchie WindowManager).
  • flags: nouvel ensemble d'options appliquées à la couche.