Что делает 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 перерисовывается ViewS автоматически, но иногда необходимо сказать: "Эй, это View был изменен, перерисовать его как можно быстрее."

Больше на:

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

http://developer.android.com/reference/android/view/View.html

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

Другие вопросы по тегам