A introdução de transições de shell consolidou e codificou o método de execução de animações no sistema, permitindo a recuperação de informações centralizadas sobre as animações programadas para execução.
O rastro de transição inclui dados sobre todas as transições que ocorrem no shell do WindowManager (WM), originados do servidor do sistema e do shell. Esse rastreamento é permanentemente ativado no Droidfood e incorporado automaticamente em relatórios de bugs.
Para mais informações sobre a coleta de rastros, consulte Transições de shell.
O Visualizador de transições do Winscope mostra essas informações para rastros de transição que contêm informações do lado do servidor e do cliente. O visualizador consiste em uma visualização de registro de tabela com as informações gerais sobre a transição à esquerda e uma visualização detalhada para cada transição à direita:
Figura 1. Análise de rastro de transição de shell.
Visualização da tabela
A visualização em tabela contém:
- Id:ID da transição gerado apenas para depuração.
- Type:tipo de transição, conforme definido em
Transitions.java
. - Tempo de envio:carimbo de data/hora em que a transição foi enviada do servidor para o shell para ser processada.
- Tempo de envio:carimbo de data/hora em que a transição é enviada ao gerenciador para começar a ser reproduzida.
- Duração:o tempo que a transição levou desde o início da exibição até a conclusão.
- Status:se a transição foi:
- PLAYED: jogou.
- ABORTED: o jogo foi interrompido antes de começar. Uma transição pode ser interrompida do lado do shell ou do WM.
- MERGED: mesclada pelo gerenciador de transição em alguma outra transição que já está sendo reproduzida (o gerenciador decide como fazer isso).
Visualização detalhada
Além dos detalhes na visualização de tabela, a visualização detalhada da transição na seção TRANSITÃO SELECIONA contém:
handler
: o gerenciador de transição que processou essa animação.createTimeNs
: carimbo de data/hora em que a transição foi criada no servidor do WM.finishTimeNs
: carimbo de data/hora quando o lado do servidor do WM é notificado de que a transição foi concluída no lado do shell.endTransactionId
: transação final do SurfaceFlinger incluída nesta transição.startTransactionId
: transação inicial do SurfaceFlinger incluída nesta transição.targets
: lista de participantes da transição.type
: tipo de transição, conforme definido emTransitions.java
.
Valores desejados
Os alvos são os elementos envolvidos na transição (normalmente atividades ou tarefas). Para cada destino registrado:
layerId
: camada que está sendo animada (da hierarquia do SurfaceFlinger).mode
: tipo de animação realizada nessa camada.windowId
: janela que está sendo animada (da hierarquia do WindowManager).flags
: novo conjunto de flags sendo aplicado à camada.