Введение переходов оболочки консолидировало и систематизировало метод запуска анимаций в системе, что позволило извлекать централизованную информацию об анимациях, запланированных к выполнению.
Трассировка перехода включает данные о каждом переходе, который происходит в оболочке WindowManager (WM), как со стороны системного сервера, так и со стороны оболочки. Эта трассировка постоянно включена в Droidfood и автоматически встраивается в отчеты об ошибках.
Дополнительную информацию о сборе трассировок см. в разделе Переходы оболочки .
Просмотрщик переходов Winscope отображает эту информацию для трассировок переходов, содержащих как серверную, так и клиентскую информацию. Просмотрщик состоит из табличного представления журнала, содержащего высокоуровневую информацию о переходе слева и подробного представления для каждого перехода справа:
Рисунок 1. Анализ следа перехода оболочки.
Вид таблицы
Табличное представление содержит:
- Идентификатор: Идентификатор перехода, созданный только для отладки.
- Тип: Тип перехода, как определено в
Transitions.java
- Время отправки: временная метка, указывающая, когда переход был отправлен с сервера в оболочку для обработки.
- Время отправки: временная метка, когда переход отправляется обработчику для начала воспроизведения.
- Продолжительность: время, которое потребовалось для перехода от начала воспроизведения до его завершения.
- Статус: Если переход был:
- ИГРАЛИ: : Играли.
- ABORTED : Прервано до начала воспроизведения. Переход может быть прерван со стороны оболочки или WM.
- ОБЪЕДИНЕНО : объединено обработчиком перехода с другим уже воспроизводимым переходом (обработчик решает, как с этим справиться).
Подробный вид
В дополнение к сведениям о табличном представлении, подробное представление перехода в разделе ВЫБРАННЫЙ ПЕРЕХОД содержит:
-
handler
: обработчик перехода, который обрабатывал эту анимацию. -
createTimeNs
: временная метка создания перехода на стороне сервера WM. -
finishTimeNs
: временная метка, когда сторона сервера WM уведомлена о завершении перехода на стороне оболочки. -
endTransactionId
: финальная транзакция SurfaceFlinger, включенная в этот переход. -
startTransactionId
: начальная транзакция SurfaceFlinger, включенная в этот переход. -
targets
: Список участников перехода. -
type
: тип перехода, как определено вTransitions.java
Цели
Цели — это элементы, участвующие в переходе (обычно действия или задачи). Для каждой цели мы записываем:
-
layerId
: Анимируемый слой (из иерархии SurfaceFlinger). -
mode
: Тип анимации, выполняемой на этом слое. -
windowId
: Окно, которое анимируется (из иерархии WindowManager). -
flags
: новый набор флагов, применяемый к слою.