Transições de shell

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:

Análise de rastro de transição de shell

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 em Transitions.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.