A introdução das 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 rastreamento de transição inclui dados sobre cada transição no shell do WindowManager (WM), tanto do servidor do sistema quanto do shell. O Droidfood ativa permanentemente esse rastreamento e o incorpora automaticamente aos relatórios de bugs.
Para mais informações sobre a coleta de rastreamentos, consulte Transições de shell.
O visualizador de transições do Winscope mostra essas informações para rastreamentos de transição que contêm informações do lado do servidor e do cliente. O visualizador inclui uma visualização de registro em tabela à esquerda, que mostra informações de transição de alto nível, e uma visualização detalhada à direita para cada transição:
Figura 1. Análise de rastreamento de transição de shell.
Visualização da tabela
A visualização em tabela contém:
- Id:ID de transição gerado apenas para depuração.
- Type:tipo de transição, conforme definido em
Transitions.java
. - Horário de envio:carimbo de data/hora em que a transição foi enviada do servidor para o shell para ser processada.
- Horário de envio:carimbo de data/hora em que a transição é enviada ao manipulador para começar a reprodução.
- Duração:tempo que a transição levou do início da reprodução até a conclusão.
- Status:se a transição foi:
- JOGADO: jogado.
- ABORTED: abortado antes de ser reproduzido. 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 já em andamento. O gerenciador decide como lidar com isso.
Visualização detalhada
Além dos detalhes na visualização em tabela, a visualização detalhada da transição na seção TRANSIÇÃO SELECIONADA contém:
handler
: o manipulador de transição que processou essa animação.createTimeNs
: carimbo de data/hora em que a transição foi criada no lado do servidor do WM.finishTimeNs
: carimbo de data/hora em que o lado do servidor do WM é notificado de que a transição terminou de ser executada 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 destinos são os elementos envolvidos na transição, geralmente atividades ou tarefas. Para cada destino, as seguintes informações são registradas:
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.