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

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

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

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

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

Shell transition trace analysis

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

Табличный вид

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

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

Детальный вид

Помимо подробной информации в табличном представлении, подробное представление переходов в разделе «Выбранный переход» содержит:

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

Цели

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

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