См .:
http://developer.android.com/reference/android/view/View.html#setWillNotDraw(boolean)
Я не уверен, где вы получили вашу информацию, но, по крайней мере, Javadoc говорит, что большинство пользователей установят это false
, чтобы получить Androidчтобы отправить это onDraw
события себя.Что касается вашего вопроса о том, когда вы должны сделать это, я бы сказал, что все сводится к тому, почему вы используете SurfaceView
.
Если ваш взгляд отображает что-то динамическое (например, для игры или что-то, что имеетжесткий цикл обработки событий), вы захотите контролировать именно то, когда происходят обновления, особенно если у вас есть информация для использования одной из более подробных форм invalidate
для сохранения перерисовки всего View
.Вам не нужно, чтобы Android вызывал для вас invalidate
, и поэтому флаг есть.
Если, с другой стороны, вы просто рисуете что-то статичное, имеет смысл позволить стеку пользовательского интерфейса Androidконтролировать недействительность.
Кстати, invalidate
отправляет только запрос на повторное рисование View
, так что учтите это, если вы собираетесь использовать стиль цикла событий (onDraw
будетбыть вызванным когда-нибудь после вы звоните).
Редактировать: некоторые пояснения.