À quoi sert la fonction postInvalidate()
dans Android? J'ai vu cette fonction dans beaucoup d'endroits. Quand j'ai googlé, je suis sorti avec beaucoup de choses:
postInvalidate-- publier une demande d'annulation sur le thread UI
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 le invalidate et le postInvalidate méthode. 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 qu'à partir de votre UIThread, une autre méthode est nécessaire lorsque vous n'êtes pas dans l'UIThread et que vous souhaitez quand même informer le 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 la boucle d'événements suivante sur l'UIThread dès que possible. Il est également brièvement expliqué dans la documentation du SDK.
Il suffit de comparer invalidate et postInvalidate .
Par cette méthode (postInvalidate()
), vous pouvez invalider un View
à partir de threads non-UI. Pour invalider un View
du thread UI, utilisez la méthode invalidate()
.
L'invalidation signifie que la méthode View.onDraw(Canvas)
sera appelée à un moment donné (pas immédiatement) pour redessiner le View
entier (si le View
est visible).
Android redessine automatiquement View
s, mais il est parfois nécessaire de dire: "Hé, ce View
a été modifié, redessinez-le le plus rapidement 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 à partir du thread d'interface utilisateur et postInvalidate()
peut être appelée à partir du thread non UI afin de dire Android pour mettre à jour notre vue personnalisée après quelques modifications.