postInvalidate()
Android中的函数有什么用?我在很多地方都看到过这个功能。当我用谷歌搜索时,我得到了这么多:
postInvalidate——在 UI 线程上发布一个无效请求
我不知道那里的“无效请求”一词是什么意思。有人可以详细解释这里发生了什么吗?
postInvalidate()
Android中的函数有什么用?我在很多地方都看到过这个功能。当我用谷歌搜索时,我得到了这么多:
postInvalidate——在 UI 线程上发布一个无效请求
我不知道那里的“无效请求”一词是什么意思。有人可以详细解释这里发生了什么吗?
从 View 类派生的每个类都有invalidate和postInvalidate方法。如果 invalidate 被调用,它会告诉系统当前视图已经改变并且应该尽快重绘。由于此方法只能从您的 UIThread 调用,当您不在 UIThread 中并且仍想通知系统您的视图已更改时,需要另一个方法。postInvalidate 方法从非 UIThread 通知系统,视图会尽快在 UIThread 的下一个事件循环中重绘。SDK 文档中也有简要说明。
只需比较invalidate和postInvalidate。
通过这种方法 ( postInvalidate()
),您可以使View
来自非 UI 线程的 a 无效。使View
来自 UI 线程的使用invalidate()
方法无效。
失效意味着,View.onDraw(Canvas)
我们将在将来的某个时候(不是立即)调用该方法来重绘整个View
(如果View
是可见的)。
Android是View
自动重绘s的,但是有时候需要告诉:“哎,这个View
改了,尽快重绘吧。”
更多信息:
http://developer.android.com/guide/topics/ui/how-android-draws.html
http://developer.android.com/reference/android/view/View.html#invalidate%28%29
简单来说,invalidate()
方法可以从 UI Thread 调用,postInvalidate()
也可以从非 UI Thread 调用,以便告诉 android 在对其进行一些更改后更新我们的 Custom View。