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