Transizioni della shell

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

La traccia di transizione include i dati su ogni transizione che si verifica all'interno della shell WindowManager (WM), sia dal lato del server di sistema sia dal lato della shell. Questa traccia è attivata definitivamente in Droidfood e incorporata automaticamente nelle segnalazioni di 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 contenenti informazioni sia lato server sia lato client. Il visualizzatore è costituito da una visualizzazione del log della tabella contenente le informazioni di alto livello sulla transizione a sinistra e una visualizzazione dettagliata di ogni transizione a destra:

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.
  • Tipo: tipo di transizione, come definito in Transitions.java
  • Ora invio: timestamp della transizione inviata dal server alla shell per essere gestita.
  • Ora di invio:il timestamp dell'invio della transizione all'handle per avviare la riproduzione.
  • Durata: il tempo impiegato dalla transizione dall'inizio alla fine della riproduzione.
  • Stato: se la transizione è stata:
    • PLAYED:: ha giocato.
    • ABORTED: operazione interrotta prima della riproduzione. Una transizione può essere abortita dal lato della shell o del WM.
    • UNIONE: unita dall'handler di transizione a un'altra transizione già in riproduzione (l'handler decide come gestire questa operazione).

Visualizzazione dettagliata

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

  • handler: il gestore della transizione che ha gestito questa animazione.
  • createTimeNs: timestamp della creazione della transizione sul lato del server WM.
  • finishTimeNs: timestamp relativo al momento in cui il lato server WM viene informato del completamento dell'esecuzione della transizione lato shell.
  • endTransactionId: transazione SurfaceFlinger finale inclusa in questa transição.
  • startTransactionId: transazione iniziale di SurfaceFlinger inclusa in questa transição.
  • 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 registriamo:

  • layerId: livello in animazione (dalla gerarchia SurfaceFlinger).
  • mode: tipo di animazione eseguita su questo livello.
  • windowId: finestra in animazione (dalla gerarchia WindowManager).
  • flags: nuovo insieme di flag applicati al livello.