Drawn out: how Android renders (Google I/O '18) - интересное видео с рассказом о системе рендеренга Android. Основная цель: донести до зрителя идею, что малейшие строчки их кода и малейшие изменения интерфейса приводят в движение огромные механизмы и это следует иметь ввиду. Простые примеры:
- простейшее окошко со списком состоит из более чем десятка лэайотов;
- простая операция смены цвета элемента приводит к его полной ивалидации, то есть пересчету состояния и размеров элемента, а кроме того изменению информации о всех предках этого элемента;
- затем эта информация должна быть синхронизирована с потоком отрисовки, работающим с GPU, плюс ему должны быть отданы битмапы;
- затем происходит перестройка списка необходимых для отрисовки операций с целью их оптимизации на GPU (на видео есть превосходный пример на тему отрисовки gmail в разных вариантах);
- с помощью GL-команд происходит отрисовка нужного изображения, которое затем возвращается обратно в тред отрисовки;
- Затем в дело вступает Surface Flinger, которой собирает все части интерфейса Android в единое целое.
И это всего-лишь то, что проихоодит при нажатии на элемент списка. В видео также есть рассказ о происходящем во время промотки этого списка. Рекомендую посмотреть.
- простейшее окошко со списком состоит из более чем десятка лэайотов;
- простая операция смены цвета элемента приводит к его полной ивалидации, то есть пересчету состояния и размеров элемента, а кроме того изменению информации о всех предках этого элемента;
- затем эта информация должна быть синхронизирована с потоком отрисовки, работающим с GPU, плюс ему должны быть отданы битмапы;
- затем происходит перестройка списка необходимых для отрисовки операций с целью их оптимизации на GPU (на видео есть превосходный пример на тему отрисовки gmail в разных вариантах);
- с помощью GL-команд происходит отрисовка нужного изображения, которое затем возвращается обратно в тред отрисовки;
- Затем в дело вступает Surface Flinger, которой собирает все части интерфейса Android в единое целое.
И это всего-лишь то, что проихоодит при нажатии на элемент списка. В видео также есть рассказ о происходящем во время промотки этого списка. Рекомендую посмотреть.