Что произойдет если вызвать invalidate()

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

Ответ

Вызов invalidate() помечает View как недействительную, запрашивая перерисовку в следующем цикле отрисовки UI. Система объединит несколько вызовов invalidate() в один проход для оптимизации.

Если нужно немедленное обновление (например, при анимации), используйте postInvalidate(), который работает из не-UI потоков.

Пример:

view.invalidate() // Запрос на перерисовку
// Или из фонового потока:
view.postInvalidate()

Важно: invalidate() не вызывает onDraw() напрямую, а лишь планирует его выполнение.