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

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

Трассировка перехода содержит данные о каждом переходе в оболочке 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 – новый набор флагов, применяемых к слою.