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

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上时,这时候适合调用这个方法。

原文发布于微信公众号 - 非著名程序员(non-famous-coder)

原文发表时间:2015-07-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏苦逼的码农

回车与换行的故事

以前在学汇编的时候,一直不知道老师在换行时,总会打一个换行符和回车符,原来他们还有这么一个故事….

16530
来自专栏闻道于事

动态增加表单元素并获取元素的text和value提交

以上是效果图 需求是这样的: 专家设置好条件,然后设备检测到达到相应的条件之后,设备发出提醒给用户。 这就需要专家设置好能看懂的条件之后,然后把给专家看的,正常...

749110
来自专栏杨建荣的学习笔记

初识YAML

晚上本来想看看Julia语言的,最后发现需要花额外的不少时间,就先放放,那就看看Yaml吧,要学习的话,周期短,本身也比较简单清晰。 早些年的...

29070
来自专栏肖蕾的博客

第七章:游戏音效Audio接口简介Sound类及使用方法Music类以及使用方法

1.LibGdx提供的音频方式,有三种,但是游戏中主要使用两种,Sound Music 2.枪声,按键声,这些短促,播放频率高的可以使用Sound实现。 3...

13820
来自专栏自由而无用的灵魂的碎碎念

多层次探秘Windows Vista的区域与语言选项和多语言版本问题

之前,一直想深入了解下Windows Vista Ultimate的英文版与中文版有什么详细的区别,因为Ultimate版支持多国语言。这便萌生了写这篇文章的想...

11630
来自专栏TungHsu

【干货】什么?Python3.X不能输出中文?原来是编辑器geany的锅?!

小白说我要开始学Python了,既然3.X支持中文,那就学3吧。于是安装好Python环境,下载好geany就开始写了。 先写个“Hello World”吧,作...

48360
来自专栏互联网杂技

重新认识javascript的settimeout和异步

今晚看到QLeelulu的一道JavaScript面试题(setTimeout),稍微想了一下,好不容易连猜带蒙,凑巧说对了答案。但是原因到底是什么呢?自己一时...

34590
来自专栏知道一点点

用js+cookie实现商城的购物车功能

<input name="buy" type="image" alt="第一个商品" src="images/buy.gif" align="middle" o...

27720
来自专栏阿炬.NET

微信分享代码

58190
来自专栏AhDung

【vbs】vbs写ini文件

这两天在折腾给一个项目打安装包,第一次接触软件打包,用的Advanced Installer(以下简称AI),应该说如果安装过程没有特殊动作(常规动作指释放文件...

16920

扫码关注云+社区

领取腾讯云代金券