postInvalidate()是做什么的?

Android中的postInvalidate()函数有什么用? 我已经在很多地方看到了这个function。 当我谷歌search,我出来这么多:

postInvalidate– 在UI线程上发布一个无效请求

我不知道这里的“无效请求”是什么意思。 有人可以详细解释这里发生了什么?

每个派生自View类的类都有invalidatepostInvalidate方法。 如果调用invalidate,它告诉系统当前视图已经改变,应该尽快重画。 由于这个方法只能从你的UIThread中调用,所以当你不在UIThread中时,还需要另外一个方法来通知系统你的View已经被改变了。 postInvalidate方法从非UIThread中通知系统,视图在UIThread的下一个事件callback中尽快重绘。 在SDK文档中也简要地解释了它。

只是比较invalidatepostInvalidate

通过这个方法( postInvalidate() ),你可以使非UI线程的View失效。 从UI线程使用invalidate()方法使View invalidate()

失效意味着View.onDraw(Canvas)方法将在未来的某个点(不是立即)调用来重绘整个View (如果View是可见的)。

Android正在自动重新绘制View ,但有时需要告诉:“嘿,这个View已经改变,尽可能快地重绘。

更多:

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

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

简而言之,可以从UI线程调用invalidate()方法,并且可以从非UI线程调用postInvalidate() ,以便告诉android在对其进行一些更改后更新自定义视图。