Что такое Choreographer

«Что такое Choreographer» — вопрос из категории UI и Views, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Choreographer — это системный компонент Android, который синхронизирует выполнение операций с отрисовкой кадров (VSYNC). Он координирует input, анимации и отрисовку, чтобы избежать пропущенных кадров (jank).

Ключевые моменты:

  • Работает на основе VSYNC-сигналов (обычно 60 Гц)
  • Позволяет запланировать выполнение кода на следующий кадр через postFrameCallback
  • Используется в View системе для вызовов onDraw()

Пример использования для мониторинга FPS:

val choreographer = Choreographer.getInstance()
var frameCount = 0

val callback = object : Choreographer.FrameCallback {
    override fun doFrame(frameTimeNanos: Long) {
        frameCount++
        choreographer.postFrameCallback(this)
    }
}
choreographer.postFrameCallback(callback)