Transizioni della shell

L'introduzione delle transizioni shell ha consolidato e codificato il metodo di esecuzione delle animazioni all'interno del sistema, consentendo il recupero di informazioni centralizzate sulle animazioni previste per l'esecuzione.

La traccia della transizione include i dati di ogni transizione all'interno della shell WindowManager (WM), sia dal server di sistema sia dalla shell. Droidfood attiva in modo permanente questa traccia e la incorpora automaticamente nei report sui bug.

Per ulteriori informazioni sulla raccolta delle tracce, consulta Transizioni della shell.

Il visualizzatore delle transizioni di Winscope mostra queste informazioni per le tracce di transizione che contengono informazioni sia lato server sia lato client. Il visualizzatore include una visualizzazione del log della tabella a sinistra, che mostra informazioni di transizione di alto livello, e una visualizzazione dettagliata a destra per ogni transizione:

Analisi della traccia di transizione della shell

Figura 1. Analisi della traccia di transizione della shell.

Visualizzazione tabella

La visualizzazione tabella contiene:

  • Id:ID transizione generato solo per il debug.
  • Type: tipo di transizione, come definito in Transitions.java.
  • Ora di invio:timestamp dell'invio della transizione dal server alla shell da gestire.
  • Ora di invio:timestamp in cui la transizione viene inviata al gestore per iniziare la riproduzione.
  • Durata: il tempo impiegato per la transizione dall'inizio della riproduzione al termine.
  • Stato:se la transizione è stata:
    • GIOCATO: hai giocato.
    • INTERROTTO: interrotto prima della riproduzione. Una transizione può essere interrotta dalla shell o dal lato WM.
    • UNITE: unite dal gestore delle transizioni in un'altra transizione già in riproduzione (il gestore decide come gestire questa situazione).

Visualizzazione dettagliata

Oltre ai dettagli nella visualizzazione a tabella, la visualizzazione dettagliata della transizione nella sezione TRANSIZIONE SELEZIONATA contiene:

  • handler: il gestore delle transizioni che ha gestito questa animazione.
  • createTimeNs: timestamp della creazione della transizione sul lato server di WM.
  • finishTimeNs: timestamp relativo al momento in cui il lato server di WM riceve la notifica che la transizione è stata completata sul lato shell.
  • endTransactionId: Transazione SurfaceFlinger finale inclusa in questa transizione.
  • startTransactionId: Transazione SurfaceFlinger iniziale inclusa in questa transizione.
  • targets: Elenco dei partecipanti alla transizione.
  • type: tipo di transizione, come definito in Transitions.java.

Obiettivi

I target sono gli elementi coinvolti nella transizione, in genere attività o compiti. Per ogni target vengono registrate le seguenti informazioni:

  • layerId: Livello animato (dalla gerarchia SurfaceFlinger).
  • mode: il tipo di animazione eseguita su questo livello.
  • windowId: la finestra che viene animata (dalla gerarchia di WindowManager).
  • flags: Nuovo insieme di flag applicato al livello.