postInvalidate()是做什么的?
Android中的postInvalidate()
函数有什么用? 我已经在很多地方看到了这个function。 当我谷歌search,我出来这么多:
postInvalidate– 在UI线程上发布一个无效请求
我不知道这里的“无效请求”是什么意思。 有人可以详细解释这里发生了什么?
每个派生自View类的类都有invalidate和postInvalidate方法。 如果调用invalidate,它告诉系统当前视图已经改变,应该尽快重画。 由于这个方法只能从你的UIThread中调用,所以当你不在UIThread中时,还需要另外一个方法来通知系统你的View已经被改变了。 postInvalidate方法从非UIThread中通知系统,视图在UIThread的下一个事件callback中尽快重绘。 在SDK文档中也简要地解释了它。
只是比较invalidate和postInvalidate 。
通过这个方法( 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在对其进行一些更改后更新自定义视图。