Вызов метода requestLayout() не гарантирует немедленный вызов onDraw().
При вызове метода requestLayout() обязательно вызывается метод onDraw()?
Вызов метода requestLayout() не гарантирует немедленный вызов onDraw().
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Вызов метода requestLayout() не гарантирует немедленный вызов onDraw().
requestLayout() инициирует пересчет расположения и размеров View, что влечет за собой вызов onMeasure() и onLayout(). После успешного прохождения этих этапов система решает, нужно ли перерисовывать View, и если да, то вызывает onDraw().
Таким образом, onDraw() вызывается не обязательно сразу после requestLayout(), а только если в результате изменений требуется перерисовка.
Если нужно принудительно вызвать перерисовку без изменения размеров или расположения, следует использовать invalidate(), который напрямую приводит к вызову onDraw().