La introducción de transiciones de shell consolidó y codificó el método de ejecución de animaciones dentro del sistema, lo que permite recuperar información centralizada sobre las animaciones programadas para su ejecución.
El seguimiento de transición incluye datos sobre cada transición que se produce dentro de la shell de WindowManager (WM), que se origina desde el servidor del sistema y los lados de la shell. Este registro está habilitado de forma permanente en Droidfood y se incorpora automáticamente en los informes de errores.
Para obtener más información sobre la recopilación de seguimientos, consulta Transiciones de shell.
El visor de transiciones de Winscope muestra esta información para los seguimientos de transiciones que contienen información del servidor y del cliente. El visor consta de una vista de registro de tabla que contiene la información de alto nivel sobre la transición a la izquierda y una vista detallada de cada transición a la derecha:
Figura 1: Análisis de seguimiento 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 depurar.
- Type: Es el tipo de transición, como se define en
Transitions.java
. - Hora de envío: Es la marca de tiempo de la transición que se envió del servidor a la shell para que se controle.
- Dispatch Time: Es la marca de tiempo cuando la transición se envía al controlador para que comience a reproducirse.
- Duración: Es el tiempo que tardó la transición desde que comenzó a reproducirse hasta que finalizó.
- Estado: Si la transición fue la siguiente:
- PLAYED:: Se jugó.
- ABORTED: Se abortó antes de reproducirse. Se puede abortar una transición desde el shell o el lado de WM.
- MERGED: El controlador de transición lo une a alguna otra transición que ya se está reproduciendo (el controlador decide cómo manejar esto).
Vista detallada
Además de los detalles de la vista de tabla, la vista de transición detallada en la sección TRANSICIÓN SELECCIONADA contiene lo siguiente:
handler
: Es el controlador de transición que controló esta animación.createTimeNs
: Marca de tiempo de la transición que se creó en el servidor de WM.finishTimeNs
: Marca de tiempo cuando 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
: Es el tipo de transición, como se define enTransitions.java
.
Objetivos
Los destinos son los elementos involucrados en la transición (por lo general, actividades o tareas). Para cada objetivo, registramos lo siguiente:
layerId
: Es la capa que se anima (de la jerarquía de SurfaceFlinger).mode
: Es el tipo de animación que se realiza en esta capa.windowId
: Es la ventana que se anima (de la jerarquía de WindowManager).flags
: Es un nuevo conjunto de marcas que se aplica a la capa.