При вызове метода requestLayout() обязательно вызывается метод onDraw()?

Вызов метода requestLayout() не гарантирует немедленный вызов onDraw().

Короткий ответ

Что ответить на собеседовании

Вызов метода requestLayout() не гарантирует немедленный вызов onDraw().

Подробный разбор

Ответ с пояснениями

Вызов метода requestLayout() не гарантирует немедленный вызов onDraw().

requestLayout() инициирует пересчет расположения и размеров View, что влечет за собой вызов onMeasure() и onLayout(). После успешного прохождения этих этапов система решает, нужно ли перерисовывать View, и если да, то вызывает onDraw().

Таким образом, onDraw() вызывается не обязательно сразу после requestLayout(), а только если в результате изменений требуется перерисовка.

Если нужно принудительно вызвать перерисовку без изменения размеров или расположения, следует использовать invalidate(), который напрямую приводит к вызову onDraw().

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку