【解疑答惑】—— invalidate、postInvalidate的区别

阅读: 评论:0

【解疑答惑】—— invalidate、postInvalidate的区别

【解疑答惑】—— invalidate、postInvalidate的区别

共同点

  • 两者都是刷新界面的方法
  • 原理:将UI线程中之前旧的view删掉,重新创建一个view

区别

  • invalidate()只能在UI线程中调用,也符合主线程更新UI的原则
  • postInvalidate()可以直接在子线程中刷新UI,源码如下:

        /***This method can be invoked from outside of the UI thread* only when this View is attached to a window*/public void postInvalidate() {postInvalidateDelayed(0);}public void postInvalidateDelayed(long delayMilliseconds) {final AttachInfo attachInfo = mAttachInfo;if (attachInfo != null) {attachInfo.mViewRootImpl.dispatchInvalidateDelayed(this, delayMilliseconds);}}
    
  • postInvalidate()是当View加载到window中的时候可以在UI线程外更新界面,再往下的dispatchInvalidateDelayed方法就是封装不可见得了

本文发布于:2024-02-04 23:47:33,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170719152960866.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23