Что делает postInvalidate()?
Какая польза от postInvalidate()
функция в Android? Я видел эту функцию во многих местах. Когда я погуглил, я очень много сказал об этом:
postInvalidate - опубликовать недействительный запрос в пользовательском интерфейсе
Я не знаю, что там означает фраза "запрос на недействительность". Может кто-нибудь подробно объяснить, что здесь происходит?
3 ответа
Каждый класс, производный от класса View, имеет метод invalidate и postInvalidate. Если вызывается invalidate, он сообщает системе, что текущее представление изменилось, и его следует перерисовать как можно скорее. Поскольку этот метод может быть вызван только из вашего UIThread, необходим другой метод, когда вы не в UIThread и все еще хотите уведомить систему об изменении вашего View. Метод postInvalidate уведомляет систему о не-UIThread, и представление как можно скорее перерисовывается в следующем цикле событий в UIThread. Это также кратко объяснено в документации SDK.
Просто сравните недействительный и postInvalidate.
Этим методом (postInvalidate()
), вы можете сделать недействительным View
из не-пользовательских потоков. Чтобы сделать недействительным View
из UI-потока invalidate()
метод.
Недействительность означает, что View.onDraw(Canvas)
метод будет вызван в какой-то момент в будущем (не сразу), чтобы перерисовать весь View
(если View
видно).
Android перерисовывается View
S автоматически, но иногда необходимо сказать: "Эй, это View
был изменен, перерисовать его как можно быстрее."
Больше на:
http://developer.android.com/guide/topics/ui/how-android-draws.html
http://developer.android.com/reference/android/view/View.html
Проще говоря, invalidate()
метод может быть вызван из потока пользовательского интерфейса и postInvalidate()
может вызываться из не-пользовательского интерфейса, чтобы сообщить Android об обновлении нашего пользовательского представления после внесения в него некоторых изменений.