Переходы оболочки

Введение переходов оболочки консолидировало и систематизировало метод запуска анимаций в системе, что позволило извлекать централизованную информацию об анимациях, запланированных к выполнению.

Трассировка перехода включает данные о каждом переходе, который происходит в оболочке WindowManager (WM), как со стороны системного сервера, так и со стороны оболочки. Эта трассировка постоянно включена в Droidfood и автоматически встраивается в отчеты об ошибках.

Дополнительную информацию о сборе трассировок см. в разделе Переходы оболочки .

Просмотрщик переходов Winscope отображает эту информацию для трассировок переходов, содержащих как серверную, так и клиентскую информацию. Просмотрщик состоит из табличного представления журнала, содержащего высокоуровневую информацию о переходе слева и подробного представления для каждого перехода справа:

Shell transition trace analysis

Рисунок 1. Анализ следа перехода оболочки.

Вид таблицы

Табличное представление содержит:

  • Идентификатор: Идентификатор перехода, созданный только для отладки.
  • Тип: Тип перехода, как определено в Transitions.java
  • Время отправки: временная метка, указывающая, когда переход был отправлен с сервера в оболочку для обработки.
  • Время отправки: временная метка, когда переход отправляется обработчику для начала воспроизведения.
  • Продолжительность: время, которое потребовалось для перехода от начала воспроизведения до его завершения.
  • Статус: Если переход был:
    • ИГРАЛИ: : Играли.
    • ABORTED : Прервано до начала воспроизведения. Переход может быть прерван со стороны оболочки или WM.
    • ОБЪЕДИНЕНО : объединено обработчиком перехода с другим уже воспроизводимым переходом (обработчик решает, как с этим справиться).

Подробный вид

В дополнение к сведениям о табличном представлении, подробное представление перехода в разделе ВЫБРАННЫЙ ПЕРЕХОД содержит:

  • handler : обработчик перехода, который обрабатывал эту анимацию.
  • createTimeNs : временная метка создания перехода на стороне сервера WM.
  • finishTimeNs : временная метка, когда сторона сервера WM уведомлена о завершении перехода на стороне оболочки.
  • endTransactionId : финальная транзакция SurfaceFlinger, включенная в этот переход.
  • startTransactionId : начальная транзакция SurfaceFlinger, включенная в этот переход.
  • targets : Список участников перехода.
  • type : тип перехода, как определено в Transitions.java

Цели

Цели — это элементы, участвующие в переходе (обычно действия или задачи). Для каждой цели мы записываем:

  • layerId : Анимируемый слой (из иерархии SurfaceFlinger).
  • mode : Тип анимации, выполняемой на этом слое.
  • windowId : Окно, которое анимируется (из иерархии WindowManager).
  • flags : новый набор флагов, применяемый к слою.