Android中postInvalidate()
功能的用途是什么?我在很多地方都看到过这个功能。当我用Google搜索时,我出来了这么多:
postInvalidate-- 在UI线程上发布无效请求
我不知道“无效请求”这句话是什么意思。有人可以详细解释这里发生了什么吗?
答案 0 :(得分:123)
从View类派生的每个类都有无效和 postInvalidate 方法。如果调用invalidate,它会告诉系统当前视图已更改,并且应该尽快重绘。由于此方法只能从您的UIThread中调用,因此当您不在UIThread中并且仍希望通知系统您的View已被更改时,需要另一种方法。 postInvalidate方法从非UIThread通知系统,并且尽快在UIThread上的下一个eventloop中重新绘制View。 SDK文档中也是briefly explained。
只需比较无效和 postInvalidate 。
答案 1 :(得分:20)
通过此方法(postInvalidate()
),您可以使非UI线程中的View
无效。要从UI线程使用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
答案 2 :(得分:2)
简单来说,可以从UI线程调用invalidate()
方法,并且可以从非UI线程调用postInvalidate()
,以告诉android在对其进行一些更改后更新我们的自定义视图