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