Google обновила MessageQueue в Android 17 для устранения лагов интерфейса Обложка: Skyread

Google обновила MessageQueue в Android 17 для устранения лагов интерфейса

Новости
Главное:

  • В Android 17 существенно переработали подсистему MessageQueue для устранения лагов при отрисовке интерфейса.
  • Введён новый механизм DeliQueue, обеспечивающий параллельную работу потоков с минимальными блокировками и ускоряющий обработку сообщений в несколько тысяч раз.
  • Новый подход позволил сократить пропущенные кадры на 8% в системном интерфейсе и на 4% в сторонних приложениях, что улучшит плавность работы интерфейсов.

Google объявила о значительном усовершенствовании подсистемы MessageQueue в грядущем обновлении Android 17. Главным нововведением стала замена традиционного механизма очередей на инновационную структуру DeliQueue, позволяющую многопоточной вставке сообщений работать с минимальными блокировками и тем самым устранять проблему «лагов» в приложениях, связанные с задержками при отрисовке элементов интерфейса.

Ранее в Android многопоточные потоки могли вмешиваться в очередь сообщений, используемую для отрисовки UI, из-за чего часть задач не успевала выполняться в срок, что приводило к падению кадровой частоты и заметным торможениям интерфейса. Новый механизм DeliQueue разделяет операции вставки и обработки сообщений, используя стек Treiber без блокировок для хранения сообщений, а также приоритетную очередь для упорядочивания их по времени выполнения. Такой подход минимизирует захват блокировок и оптимизирует доступ потоков к общей очереди.

Процесс обработки сообщений в DeliQueue реализован с использованием цикла CAS, который эффективно обновляет указатель на начало списка без дополнительных блокировок, а Looper при обработке сообщений обходится стеком в порядке от последних до уже обработанных сообщений, перемещая их в очередь с приоритетом. Благодаря этому значительно снижается конкуренция потоков за ресурсы, что вдохновлено практиками из книги Java Concurrency in Practice.

Результаты внутреннего тестирования Google показали, что многопоточная вставка в новую очередь работает до 5000 раз быстрее по сравнению с устаревшим MessageQueue. В дополнение, замеры на трассировках Perfetto продемонстрировали сокращение затрат основного потока приложения на блокировки примерно на 15%. Это напрямую сказалось на уменьшении пропущенных кадров в пользовательских интерфейсах: почти на 8% в системном UI и лаунчере, а также на 4% в сторонних приложениях.

Разработчики уже получили возможность протестировать свои проекты с использованием обновлённой подсистемы MessageQueue в Android 17, также доступны соответствующие сборки для пользователей совместимых устройств. Улучшение обещает значительно сгладить взаимодействие с интерфейсами и повысить отзывчивость приложений на платформе.

Tagged