vista - viewgroup android example
¿Qué hace postInvalidate()? (3)
¿Cuál es el uso de la función postInvalidate()
en Android? He estado viendo esta función en muchos lugares. Cuando busqué en Google, salí con esto:
postInvalidate: publicar una solicitud de invalidación en el hilo de la interfaz de usuario
No sé qué significa la frase "solicitud invalidada". ¿Alguien puede explicar en detalle lo que está sucediendo aquí?
Cada clase que se deriva de la clase View tiene el método invalidate y postInvalidate . Si se llama a invalidación, le dice al sistema que la vista actual ha cambiado y se debe volver a dibujar tan pronto como sea posible. Como este método solo puede invocarse desde UIThread, se necesita otro método para cuando no se encuentre en UIThread y aún desee notificar al sistema que su Vista ha sido modificada. El método postInvalidate notifica al sistema desde un mensaje no UIThread y la vista se vuelve a dibujar en el siguiente evento en el UIThread lo antes posible. También se explica brevemente en la documentación del SDK.
Simplemente compare invalidate y postInvalidate .
Con este método ( postInvalidate()
), puede invalidar una View
desde hilos que no sean UI. Para invalidar una View
desde UI-thread use el método invalidate()
.
La invalidación significa que el View.onDraw(Canvas)
se llamará en algún momento en el futuro (no de inmediato) para volver a dibujar toda la View
(si la View
es visible).
Android está redibujando View
s automáticamente, pero a veces es necesario decir: "Oye, esta View
ha sido modificada, vuelva a dibujar lo más rápido posible".
Mas en:
http://developer.android.com/guide/topics/ui/how-android-draws.html
http://developer.android.com/reference/android/view/View.html#invalidate%28%29
En palabras simples, se puede llamar al método invalidate()
desde UI Thread y postInvalidate()
puede postInvalidate()
desde un subproceso que no sea UI para decirle a android que actualice nuestra vista personalizada después de que se le hayan hecho algunos cambios.