Подтвердить что ты не робот

Что делает postInvalidate()?

Какая функция postInvalidate() используется в Android? Я видел эту функцию во многих местах. Когда я в Googled, я вышел с этим много:

postInvalidate-- отправить запрос недействительности в пользовательский интерфейс

Я не знаю, что означает фраза "invalidate request". Может кто-нибудь объяснить подробно, что здесь происходит?

4b9b3361

Ответ 1

Каждый класс, полученный из класса View, имеет метод invalidate и postInvalidate. При вызове invalidate он сообщает системе, что текущее представление изменилось, и оно должно быть перерисовано как можно скорее. Поскольку этот метод можно вызывать только из вашего UIThread, нужен другой метод, если вы не находитесь в UIThread и все еще хотите уведомить систему о том, что ваш View был изменен. Метод postInvalidate уведомляет систему из не-UIThread, и представление как можно скорее перерисовывается в следующем eventloop на UIThread. Это также вкратце объяснено в документации SDK.

Просто сравните invalidate и postInvalidate.

Ответ 2

С помощью этого метода (postInvalidate()) вы можете аннулировать View из потоков, отличных от UI. Чтобы аннулировать View из UI-потока, используйте метод invalidate().

Недействительность означает, что метод View.onDraw(Canvas) мы будем вызывать в какой-то момент в будущем (а не сразу), чтобы перерисовать целое View (если отображается View).

Android выполняет автоматическую перерисовку View, но иногда необходимо сказать: "Привет, этот View был изменен, перерисовывайте его как можно быстрее".

Дополнительно:

http://developer.android.com/guide/topics/ui/how-android-draws.html

http://developer.android.com/reference/android/view/View.html#invalidate%28%29

Ответ 3

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