Android Interview Review

@AndroidSobes Нравится 2 1 500

Популярные вопросы и ответы с собеседований на Android-разработчика.
Канал для Java-разработчиков @JavaSobes
Связаться с нами @SobesAdmin
https://itsobes.ru
Гео и язык канала
Россия, Русский
Категория
Образование


Написать автору
Гео канала
Россия
Язык канала
Русский
Категория
Образование
Добавлен в индекс
18.03.2019 05:12
2 Jul 2019, 18:01 (237 дней назад)
Как реализовать метод View.onDraw()? (4/4)

При разговоре о реализации метода onDraw() речь часто заходит об оптимизациях этого метода и других вещей, связанных с UI.

Не следует выполнять вычисления и создавать объекты в методе onDraw(). Создание новых объектов может спровоцировать сборку мусора, что приводит к Stop the world паузам и лагам пользовательского UI. Создавайте объекты Paint при инициализации view и переиспользуйте их в методе onDraw(). Также избегайте создания объектов во время отработки анимаций.

Другой способ оптимизировать UI – уменьшить количество вызовов метода onDraw(). Большинство вызовов onDraw() является результатом отработки invalidate(), поэтому старайтесь избегать частого вызова этого метода.

Еще одна дорогая операция – обход view-иерархии. При отработке метода requestLayout() система проходит по всей иерархии, чтобы определить размеры каждой из view. Для некоторых лэйаутов проход выполняется несколько раз, что вызывает проблемы с производительностью.
Для создания плавного UI необходимо уменьшать вложенность вью насколько это возможно. Старайтесь создавать кастомные плоские view, вместо нескольких вложенных стандартных лэйаутов. Для не универсальных view проще вычислять размеры, основываясь на специфике их использования в приложении.

#View