postInvalidate()有什么作用?

rog*_*one 62 android invalidation android-layout

postInvalidate()Android中的这个功能有什么用?我在很多地方都看到过这个功能.当我用Google搜索时,我出来了这么多:

postInvalidate-- 在UI线程上发布无效请求

我不知道那句话"无效请求"是什么意思.有人可以详细解释这里发生了什么吗?

Mar*_*oB. 126

从View类派生的每个类都有invalidatepostInvalidate方法.如果调用invalidate,它会告诉系统当前视图已更改,并且应该尽快重绘.由于此方法只能从您的UIThread中调用,因此当您不在UIThread中并且仍希望通知系统您的View已被更改时,需要另一种方法.postInvalidate方法从非UIThread通知系统,并且尽快在UIThread上的下一个eventloop中重新绘制View.它还在SDK文档中进行了简要说明.

只需比较invalidatepostInvalidate.

  • 谢谢你的回答,我现在知道了。 (2认同)
  • 我在你的答案中看到了逻辑,但 invalidate() 也适用于我的非 UI 类。和 postInvalidate() 一样好用。 (2认同)

bra*_*oly 21

通过此方法(postInvalidate()),您可以使View非UI线程无效.使ViewUI-thread使用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