Если вы хотите перерисовать ваше представление из UI Thread
, вы можете вызвать invalidate()
метод.
Если вы хотите перерисовать вид из Non UI Thread
, вы можете вызвать postInvalidate()
метод.
Каждый класс, производный от класса View, имеет метод invalidate и postInvalidate. Если вызывается invalidate, он сообщает системе, что текущее представление изменилось, и его следует перерисовать как можно скорее. Поскольку этот метод может быть вызван только из вашего UIThread, необходим другой метод, когда вы не в UIThread и все еще хотите уведомить систему об изменении вашего View. Метод postInvalidate уведомляет систему о не-UIThread, и представление как можно скорее перерисовывается в следующем цикле событий в UIThread. Это также кратко объяснено в документации SDK:
НАЖМИТЕ ЗДЕСЬ
UPDATE:
Существуют некоторые проблемы, возникающие при использовании postInvalidate из других потоков (например, отсутствие немедленного обновления пользовательского интерфейса), это будет более эффективным:
runOnUiThread(new Runnable() {
public void run() {
myImageView.setImageBitmap(image);
imageView.invalidate();
}
});