Que fait postInvalidate ()?

Quelle est l’utilisation de la fonction postInvalidate() dans Android? J’ai vu cette fonction dans beaucoup d’endroits. Quand j’ai googlé, je suis sorti avec autant de choses:

postInvalidate– publier une demande d’invalidation sur le thread d’interface utilisateur

Je ne sais pas ce que signifie l’expression “invalider la demande”. Quelqu’un peut-il expliquer en détail ce qui se passe ici?

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 été modifiée et qu’elle doit être redessinée dès que possible. Comme cette méthode ne peut être appelée qu’à partir de UIThread, une autre méthode est nécessaire lorsque vous n’êtes pas dans UIThread et que vous souhaitez quand même notifier au système que votre vue a été modifiée. La méthode postInvalidate notifie le système à partir d’un non-UIThread et la vue est redessinée dans le prochain événement sur le UIThread dès que possible. Il est également expliqué brièvement dans la documentation du SDK.

Juste comparer invalider et postinvalider .

Par cette méthode ( postInvalidate() ), vous pouvez invalider une View partir de threads non-interface utilisateur. Pour invalider un View from UI-thread, utilisez la méthode invalidate() .

L’invalidation signifie que la View.onDraw(Canvas) sera appelée ultérieurement (pas immédiatement) pour redessiner une View entière (si la View est visible).

Android redessine automatiquement les View , mais il est parfois nécessaire de dire: “Hé, cette View a été modifiée, redessinez-la aussi vite que possible.”

Plus à:

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

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

En termes simples, la méthode invalidate() peut être appelée depuis UI Thread et postInvalidate() peut être appelée depuis un non-UI Thread pour indiquer à Android de mettre à jour notre vue personnalisée après quelques modifications.