Chrome для Android стал заметно плавнее: Google избавилась от половины рывков при прокрутке
Google сообщила, что за период с 2023 по 2026 год удалось сократить количество рывков (scroll jank) при прокрутке страниц в Chrome для Android на 48 %. Для этого разработчики переработали архитектуру браузера, внедрив несколько новых механизмов обработки пользовательского ввода и отрисовки кадров. Об этом пишет 9to5Google со ссылкой на официальный блог компании.
Природа проблемы: почему Chrome «дергался»
В компании пояснили, что scroll jank возникает, когда браузер не успевает вовремя отобразить новый кадр после прокрутки, из-за чего пользователь замечает кратковременные рывки изображения. В отличие от обычных приложений Android, архитектура Chrome использует отдельные процессы для браузера, рендеринга и графической подсистемы. Это повышает безопасность и стабильность, но одновременно усложняет быструю обработку кадров.
С появлением в последние годы дисплеев с частотой обновления 90 Гц и более высокой частотой рывковая прокрутка стала более очевидной. Большинство других приложений для Android могут исправить это, переключившись на буферизованный алгоритм выборки сенсорного ввода. Однако по историческим причинам и необходимости обеспечить веб-совместимость Chrome не смог перейти на этот метод. Браузер обязан использовать небуферизованный ввод, получая события ввода как можно скорее. На экранах с высокой частотой обновления это приводило к случаям, когда входная выборка не соответствовала частоте обновления, и возникала дерганая прокрутка.
Ключевые оптимизации 2023–2026 годов
Для устранения проблемы была реализована система прогнозирования ввода. Если операционная система не успевает передать событие касания до наступления очередного цикла обновления экрана, Chrome формирует событие самостоятельно, рассчитывая предполагаемое положение страницы на основе предыдущего движения прокрутки.
Кроме того, перенесена обработка анимации элементов интерфейса браузера в GPU-процесс. Благодаря этому скрытие и отображение панели управления во время прокрутки больше не требуют постоянного обращения к основному процессу браузера, что уменьшило вероятность визуальных задержек.
Разработчики Android также повысили приоритет потоков операционной системы, отвечающих за доставку событий ввода в Chrome. Эти изменения, дополнившие другие архитектурные оптимизации, в совокупности позволили почти вдвое сократить количество задержек при прокрутке страниц в браузере.
Роль наносекундного API Android 14
Основой для улучшений стал новый наносекундный API, появившийся в Android 14. Он позволяет Chrome отбирать входные данные с интервалом в наносекунды, а не на миллисекундном уровне, как было ограничением предыдущего метода на основе Java. После тонкой настройки алгоритма, предсказывающего движение на этих сверхкоротких временных отрезках, компания добилась в два раза более плавной прокрутки уже в Chrome 116.
Поддержка наносекундного API распространилась как часть Chrome 116, и компания смогла полностью перенести его на Chrome 110, где он доступен в качестве дополнительного флага. Это гарантирует, что как только пользователь получает стабильную версию Android 14, он может сразу получить гораздо более плавный просмотр в интернете.
Влияние на экосистему браузеров и приложений
Наносекундный API является общедоступным в Android, что означает, что другие браузеры на основе Chromium получат или уже получают это же изменение. Кроме того, любые другие приложения, которые по какой-либо причине не используют стандартную линейную выборку ввода Android, могут воспользоваться новым API. Firefox остается единственным популярным браузером, не полагающимся на Chromium, и он также может извлечь выгоду из этих улучшений.
Если пользователи все еще испытывают проблемы с плавностью, можно попробовать улучшить ситуацию через экспериментальные настройки, введя в адресную строку chrome://flags/ и включив функцию Smooth Scrolling.