studio example clase addview android android-layout invalidate

example - view android studio



¿Cuál es la diferencia entre los métodos invalidate() y postInvalidate() de Android? (1)

¿Cuál es la diferencia entre los métodos invalidate() y postInvalidate() Android? ¿Cuándo se llama a cada uno? ¿Deben llamarse los métodos solo en clases que extienden View ?


Si desea volver a dibujar su vista desde UI Thread puede llamar al método invalidate() .

Si desea volver a dibujar su vista desde el Non UI Thread , puede llamar postInvalidate() método postInvalidate() .

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:

HAGA CLIC AQUÍ

ACTUALIZAR:

Hay algunos problemas que surgen cuando se usa postInvalidate de otros hilos (como no tener la UI actualizada de inmediato), esto será más eficiente:

runOnUiThread(new Runnable() { public void run() { myImageView.setImageBitmap(image); imageView.invalidate(); } });