Transições de shell

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:

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

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