Transiciones de Shell

La introducción de las transiciones de shell consolidó y codificó el método de ejecución de animaciones dentro del sistema, lo que permitió recuperar información centralizada sobre las animaciones programadas para su ejecución.

El registro de transición incluye datos sobre cada transición dentro del shell de WindowManager (WM), tanto del servidor del sistema como del shell. Droidfood habilita de forma permanente este registro y lo incorpora automáticamente en los informes de errores.

Para obtener más información sobre la recopilación de registros, consulta Transiciones de Shell.

El visualizador de transiciones de Winscope muestra esta información para los registros de transiciones que contienen información del servidor y del cliente. El visualizador incluye una vista de registro de tabla a la izquierda, que muestra información de alto nivel sobre la transición, y una vista detallada a la derecha para cada transición:

Análisis del registro de transición de Shell

Figura 1: Análisis del registro de transición de Shell.

Vista de tabla

La vista de tabla contiene lo siguiente:

  • Id: Es el ID de transición que se genera solo para la depuración.
  • Tipo: Tipo de transición, como se define en Transitions.java.
  • Hora de envío: Marca de tiempo en la que se envió la transición del servidor al shell para que se controle.
  • Hora de envío: Es la marca de tiempo en la que se envía la transición al controlador para que comience la reproducción.
  • Duración: Tiempo que tardó la transición desde que comenzó la reproducción hasta que finalizó.
  • Estado: Si la transición fue la siguiente:
    • PLAYED:: Jugado.
    • ABORTED: Se abortó antes de la reproducción. Se puede anular una transición desde el shell o el administrador de ventanas.
    • MERGED: Se fusionó con otra transición que ya se estaba reproduciendo (el controlador decide cómo controlar esto).

Vista detallada

Además de los detalles de la vista de tabla, la vista de transición detallada de la sección TRANSICIÓN SELECCIONADA contiene lo siguiente:

  • handler: Es el controlador de transición que controló esta animación.
  • createTimeNs: Es la marca de tiempo en la que se creó la transición en el servidor de WM.
  • finishTimeNs: Es la marca de tiempo en la que se notifica al servidor de WM que la transición terminó de ejecutarse en el shell.
  • endTransactionId: Es la transacción final de SurfaceFlinger incluida en esta transición.
  • startTransactionId: Es la transacción inicial de SurfaceFlinger incluida en esta transición.
  • targets: Es la lista de participantes de la transición.
  • type: Tipo de transición, como se define en Transitions.java.

Objetivos

Los destinos son los elementos involucrados en la transición, por lo general, actividades o tareas. Para cada objetivo, se registra la siguiente información:

  • layerId: Es la capa que se está animando (desde la jerarquía de SurfaceFlinger).
  • mode: Tipo de animación que se realiza en esta capa.
  • windowId: Es la ventana que se está animando (desde la jerarquía de WindowManager).
  • flags: Es el nuevo conjunto de marcas que se aplica a la capa.