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