Что нельзя делать в методе onDraw у View

«Что нельзя делать в методе onDraw у View» — вопрос из категории UI и Views, который задают на 24% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Выполнение тяжелых операций в onDraw негативно влияет на производительность, так как метод вызывается часто. Избегайте:

  1. Создания объектов – приводит к сборке мусора. Вместо new Paint() используйте предварительно инициализированные объекты.
// Плохо:
val paint = Paint() // в onDraw
// Хорошо:
val paint = Paint().apply { color = Color.RED } // в конструкторе
  1. Вызова invalidate() – может вызвать бесконечный цикл перерисовок.

  2. Длительных вычислений – замедляет отрисовку. Перенесите их в onLayout или заранее.

  3. Изменения состояния View – может привести к рекурсивным вызовам onDraw.

Оптимизируйте onDraw для плавной анимации и скроллинга.