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

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

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

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

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

Shell transition trace analysis

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