Перерисуется ли View если дернуть 10 раз invalidate

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

Ответ

Нет, View не перерисуется 10 раз подряд. invalidate() лишь помечает область View как "грязную" и добавляет запрос на перерисовку в очередь сообщений. Система объединит эти вызовы и выполнит только один onDraw() в следующем цикле рендеринга.

// 10 вызовов invalidate
repeat(10) { 
    myView.invalidate() 
}
// Выполнится только один onDraw()

Это оптимизация Android - система не будет тратить ресурсы на лишние перерисовки. Если нужно принудительно обновить View несколько раз, используйте postInvalidate() с задержкой или другие механизмы синхронизации.