为什么必须由UI线程调用invalidate

时间:2011-05-25 06:32:57

标签: java android

任何人都知道为什么必须通过UI线程调用invalidate

与Java Swing一样,非{...}}函数可由非UI线程和UI线程调用。 repaint正在执行与repaint 非常相似的任务(此方法会尽快调用此组件的绘制方法。否则,此方法会立即调用此组件的更新方法尽可能。)

2 个答案:

答案 0 :(得分:1)

不,他们不一样。 Swing中还有一个invalidate方法,并且还需要调用者从EDT / Swing / UI线程调用它。

看起来在Android上重绘的等效内容是postInvalidate

答案 1 :(得分:0)

当我们从UiThread调用invalidate时,它告诉应用程序在主线程空闲时重绘视图。所以当我们调用invalidate时,它基本上会安排视图再次绘制时其他即时工作已完成。如果要在UiThread以外的单独线程中重绘视图,请使用postInvalidate()