前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >常见面试第四题之requestLayout, invalidate和postInvalidate的异同

常见面试第四题之requestLayout, invalidate和postInvalidate的异同

作者头像
非著名程序员
发布2018-02-02 19:52:17
1.2K0
发布2018-02-02 19:52:17
举报
文章被收录于专栏:非著名程序员非著名程序员

requestLayout, invalidate和postInvalidate的异同

今天我们来讲讲在面试当中最常见的,最常常被问到的第四题,近期由于小编工作比较忙碌,更新的比较缓慢还请大家见谅。 我相信大家在面试当中肯定会经常被问题view的重绘的问题,比如说:怎样重新自定义一个控件了?怎样实现一个滚动的控件了?怎样画一个折线图了等等。其实就缺少不了我们题目所说的那个问题,就是requestLayout, invalidate和postInvalidate的异同。现在我给大家分别来简单的介绍一下,明白了这些,面试中再遇到这样的问题,保准你能轻松通过。 1、android中实现view的更新有几种方法? 你知道吗?其实android中实现view的更新有两种方法,一种是invalidate,另一种是postInvalidate,其中前者是在UI线程自身中使用,而后者在非UI线程中使用。 怎么说呢?Android提供了Invalidate方法实现界面刷新,但是Invalidate不能直接在线程中调用,因为他是违背了单线程模型:Android UI操作并不是线程安全的,并且这些操作必须在UI线程中调用。 鉴于此,如果要使用invalidate的刷新,那我们就得配合handler的使用,使异步非ui线程转到ui线程中调用,如果要在非ui线程中直接使用就调用postInvalidate方法即可,这样就省去使用handler的烦恼。 2、requestLayout在什么时候用呢? 当view确定自身已经不再适合现有的区域时,该view本身调用这个方法要求parent view(父类的视图)重新调用他的onMeasure onLayout来重新设置自己位置。特别是当view的layoutparameter发生改变,并且它的值还没能应用到view上时,这时候适合调用这个方法。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2015-07-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 非著名程序员 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档