Назовите частые причины проблем с производительностью UI и как их решать

Две основные причины проблем с перформансом отрисовки лэйаутов:

• Глубокая вложенность. Плоские лэйауты отрисовываются быстрее, чем вложенные с тем же количеством View.

Double taxation. Так называется ситуация, когда для лэйаута шаги onMeasure() и onLayout() вызываются дважды. Например, double taxation случается при использовании атрибута weight в LinearLayout.


Для того, чтобы избежать проблем с производительностью следует придерживаться следующих правил:

LinearLayout c текстом и картинкой следует заменять на TextView с Compound Drawable.

• Если в качестве корневого лэйаута используется FrameLayout без кастомизированных атрибутов, то его можно заменить тегом <merge>.

• Использовать <merge> для лэйаутов, которые вкладываются в другие лэйауты;

• Использовать ConstraintLayout вместо RelativeLayout.

• Быть осторожным с атрибутом layout_weight в LinearLayout и не использовать layout_weight в нескольких вложенных лэйаутах.