Как система гарантирует частоту обновления экрана

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

Ответ

Android использует механизм VSync (Vertical Synchronization) для синхронизации обновления экрана с частотой дисплея (обычно 60Hz, 90Hz или 120Hz). Кадры рендерятся в буфер и отображаются только при следующем сигнале VSync, что исключает "разрывы" изображения.

Для анимации и плавного UI рекомендуется использовать Choreographer, который синхронизирует выполнение кода с VSync:

val choreographer = Choreographer.getInstance()
choreographer.postFrameCallback(object : Choreographer.FrameCallback {
    override fun doFrame(frameTimeNanos: Long) {
        // Код для анимации/обновления UI
        choreographer.postFrameCallback(this) // Зацикливаем
    }
})

Для View-анимаций система автоматически синхронизирует обновления с VSync через RenderThread. В Jetpack Compose используется Composition + Drawing + Frame конвейер, также привязанный к VSync.