A partir del 27 de marzo de 2025, te recomendamos que uses android-latest-release en lugar de aosp-main para compilar y contribuir a AOSP. Para obtener más información, consulta Cambios en AOSP.
Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
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 al 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 que se comenzara a reproducir. 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: Es la marca de tiempo en la que se creó la transición 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 en Transitions.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.
El contenido y las muestras de código que aparecen en esta página están sujetas a las licencias que se describen en la Licencia de Contenido. Java y OpenJDK son marcas registradas de Oracle o sus afiliados.
Última actualización: 2025-07-27 (UTC)
[[["Fácil de comprender","easyToUnderstand","thumb-up"],["Resolvió mi problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Falta la información que necesito","missingTheInformationINeed","thumb-down"],["Muy complicado o demasiados pasos","tooComplicatedTooManySteps","thumb-down"],["Desactualizado","outOfDate","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Problema con las muestras o los códigos","samplesCodeIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 2025-07-27 (UTC)"],[],[],null,["# Shell transitions\n\nThe introduction of shell transitions consolidated and codified the method of\nrunning animations within the system, allowing for the retrieval of centralized\ninformation regarding the animations slated for execution.\n\nThe transition trace includes data on every transition that occurs within the\nWindowManager (WM) shell, originating from both the system server and shell\nsides. This trace is permanently enabled in Droidfood and automatically embedded\nin bug reports.\n| **Note:** The transitions are stored in a ring buffer, which is recorded by different processes. As a result, it's possible that portions (usually the initial segments) of a transition might have been removed from the buffer. For example, when sending a transition creation time followed by a start and finish time, the buffer might contain all three segments, only the start and finish times, or even only the finish time. This limitation is consistent with other Perfetto data segments and, similar to Perfetto, the limitation is handled during rendering rather than during data creation or parsing.\n\nFor more information about trace collection, see\n[Shell transitions](/docs/core/graphics/winscope/capture/adb#capture-adb-transitions).\n\nWinscope's Transitions viewer displays this information for transition\ntraces containing both server and client-side information. The viewer consists\nof a table log view containing the high-level information about the transition\non the left and a detailed view for each transition at the right:\n\n**Figure 1.** Shell transition trace analysis.\n\nTable view\n----------\n\nThe table view contains:\n\n- **Id:** Transition ID generated only for debugging.\n- **Type:** Transition type, as defined in [`Transitions.java`](https://cs.android.com/android/platform/superproject/+/android-latest-release:frameworks/base/libs/WindowManager/Shell/src/com/android/wm/shell/transition/Transitions.java)\n- **Send Time:** Timestamp the transition was sent over from server to shell to be handled.\n- **Dispatch Time:** Timestamp when the transition is dispatched to the handler to start playing.\n- **Duration:** Time the transition took from starting to play to finished.\n- **Status:** If the transition was:\n - **PLAYED:**: Played.\n - **ABORTED**: Aborted before playing. A transition can be aborted from from shell or WM side.\n - **MERGED**: Merged by the transition handler into some other already playing transition (the handler decides how to handle this).\n\nDetailed view\n-------------\n\nIn addition to the details on the table view, the detailed transition view\nin the **SELECTED TRANSITION** section contains:\n\n- `handler`: The transition handler that handled this animation.\n- `createTimeNs`: Timestamp the transition was created on the WM server side.\n- `finishTimeNs`: Timestamp when the WM server side is notified that the transition has finished running on the shell side.\n- `endTransactionId`: Final SurfaceFlinger transaction included in this transition.\n- `startTransactionId`: Initial SurfaceFlinger transaction included in this transition.\n- `targets`: List of transition participants.\n- `type`: Transition type, as defined in [`Transitions.java`](https://cs.android.com/android/platform/superproject/+/android-latest-release:frameworks/base/libs/WindowManager/Shell/src/com/android/wm/shell/transition/Transitions.java)\n\n### Targets\n\nTargets are the elements involved in the transition (normally activities or\ntasks). For each target we record:\n\n- `layerId`: Layer that is being animated (from SurfaceFlinger hierarchy).\n- `mode`: Type of animation performed on this layer.\n- `windowId`: Window that is being animated (from WindowManager hierarchy).\n- `flags`: New set of flags being applied to the layer."]]