Назовите отличия invalidate() от requestLayout()
requestLayout() и invalidate() — два метода, которые используются чтобы обновить View после его изменения. Но используются они для разных вещей.
invalidate() это метод, который при вызове гарантирует что в когда-то в будущем (довольно скоро после вызова invalidate(), но не сразу) будет вызван метод onDraw(). То есть этот метод нужен чтобы запланировать (добавить в очередь) перерисовку View.
После вызова requestLayout() когда-то в будущем будут вызваны методы onMeasure() и onLayout() у данной View, а также у всех ее родителей. При этом вызов метода requestLayout() не гарантирует вызов onDraw().
Таким образом, invalidate() нужен чтобы перерисовать View, а requestLayout(), чтобы заново оценить размеры View. Обычно эти два метода используются вместе, но invalidate() можно использовать отдельно, когда точно известно что размеры View никак не меняются.
Бесплатные Telegram-боты для обучения
Практика с проверкой кода и помощью ИИ-ментора
AndroidSprint AI Mentor
Проверяет Pull Request'ы в GitHub, проводит тестовые собеседования с голосом и таймером, помогает разбираться с кодом 24/7
Попробовать ИИ-ментора →KotlinSprint Bot
22 урока Kotlin, 220 тестов, 120 практических задач с код-ревью
Начать обучение Kotlin →