Можно ли сделать что-то на layout так, чтобы лагало на производительном телефоне

«Можно ли сделать что-то на layout так, чтобы лагало на производительном телефоне» — вопрос из категории UI и Views, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, можно. Например, если вложить несколько ConstraintLayout с сложными цепочками зависимостей друг в друга, или использовать тяжелые операции в onDraw() кастомной вьюхи. Также лаги могут появиться при анимации множества вьюх одновременно или при частых пересчетах лейаута из-за wrap_content в сложных иерархиях.

Пример плохого кода:

<ConstraintLayout>
    <ConstraintLayout>
        <TextView
            app:layout_constraintTop_toBottomOf="@+id/view1"
            app:layout_constraintLeft_toRightOf="@+id/view2"
            app:layout_constraintRight_toLeftOf="@+id/view3"/>
        <!-- Еще 20 таких вложенных вьюх -->
    </ConstraintLayout>
</ConstraintLayout>