Quelle est la différence entre les méthodes invalidate() et postInvalidate() D'Android?
Quelle est la différence entre les méthodes invalidate()
et postInvalidate()
D'Android? Quand chacun appelée? Les méthodes doivent-elles être appelées uniquement dans les classes qui s'étendent View
?
1 réponses
Si vous voulez ré attirer votre vue à partir de UI Thread
, vous pouvez appeler invalidate()
méthode.
Si vous voulez ré attirer votre vue à partir de Non UI Thread
, vous pouvez appeler postInvalidate()
méthode.
Chaque classe dérivée de la classe View a la méthode invalidate et la méthode postInvalidate. Si invalidate est appelé, il indique au système que la vue actuelle a changé et qu'elle doit être redessinée dès que possible. Comme cette méthode ne peut être appelée que depuis votre UIThread une autre méthode est nécessaire lorsque vous n'êtes pas le UIThread et veulent toujours informer le système que votre vue a été modifiée. La méthode postInvalidate avertit le système d'un non-UIThread et la vue est redessinée dans le prochain eventloop sur UIThread dès que possible. Il est également brièvement expliqué dans la documentation du SDK:
Mise à jour:
Il y a quelques problèmes qui surviennent lors de l'utilisation de postInvalidate à partir d'autres threads (comme ne pas avoir l'interface utilisateur mise à jour tout de suite), ce sera plus efficace:
runOnUiThread(new Runnable() {
public void run() {
myImageView.setImageBitmap(image);
imageView.invalidate();
}
});