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?

21
demandé sur Pops 2011-09-29 15:02:15

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:

CLIQUEZ ICI

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();
    }
});
34
répondu Dharmendra 2014-03-03 07:26:35