Это хорошая практика программирования для вызова invalidate () внутри onDraw ()? - PullRequest
8 голосов
/ 15 февраля 2011
  1. Хорошая практика программирования - вызывать invalidate() внутри onDraw()?

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

  1. Является ли invalidate() эквивалентным асинхронной версии onDraw()?

Насколько я понимаю, они эквивалентны. Поправь меня, если я ошибаюсь. Спасибо.

1 Ответ

17 голосов
/ 15 февраля 2011

Звоните invalidate() только если ваши данные изменились и должны быть перерисованы.Вы обычно не делаете это в onDraw(), потому что в этот момент вы рисуете свои текущие данные, а не меняете их.(В некоторых случаях вы можете захотеть сделать это, например, для запуска анимации, но, как правило, я бы рекомендовал вместо этого использовать задержанное сообщение для управления собственным временем обновления.)

...