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

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

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

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

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

Shell transition trace analysis

Рисунок 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 : к слою применяется новый набор флагов.