导致View重建的原因有三个:

1、视图本身内部状态变化引起重绘;

2、view树内部添加或者删除子view;

3、View本身的大小及可见性发生变化。

   这三种情况最后都直接或者间接的调用到了三个方法,invalidate()、requestLayout()和requestFocus(),而这三个函数最终都会调用到ViewRoot中的schueduleTraversals()方法,该方法发起一个异步消息,消息处理中调用performTraversals()开始对整个View进行重新遍历。
能导致调用invalidate()方法的包含三种情况:当应用程序改变视图显示属性时,调用setVisibility();当改变视图Selected状态时,调用setSelected();当改变视图Enable状态时,调用setEnable()。
   导致调用requestLayout()方法的情况包括两种:当应用程序改变视图显示属性时,调用setVisibility(),由于显示或者不显示将影响其他兄弟视图的位置,因此会调用到requestLayout();第二种是应用程序直接或者间接调用该函数,间接调用是指应用程序调用了View类的其他函数,从而间接调用到requestLayout()。
   requestFocus()一般由程序直接调用,间接调用是指当用户按“上/下”、“左/右”键时,相关的处理逻辑会间接的调用该方法。

View工作原理(二)导致View重建原因相关推荐

  1. 以太网及网络工作原理二

    以太网及网络工作原理二 2.以太网工作原理 2.2.以太网数据帧 2.3.数据帧传输 2.4.交换机的工作原理 2.5.网线的分类 2.6.千兆以太网 2.6.1.千兆位以太网标准主要四种类型的传输介 ...

  2. View工作原理(一)事件传递原理详解

    版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 转载请说明出处:http://blog.csdn.net/ff20081528/article/details/17353869 ...

  3. View工作原理(三)视图大小计算过程(measure过程)

    一.android中view的measure过程总概 视图大小计算的过程是从根视图measure()方法开始,接着该方法会调用根视图的onMeasure()方法,onMeasure()方法会对所包含的 ...

  4. View工作原理(四)view的layout过程

    刚过完自己的本命年,新的一年希望自己有个新的开始,祝自己在新的一年里一帆风顺,同时也祝广大的朋友们新年新气象,收获多多! 一.android中view的layout过程总概 Layout过程其实就是父 ...

  5. view工作原理-计算视图大小的过程(onMeasure)

    view的视图有两种情况: 内容型视图:由视图的内容决定其大小. 图形型视图:父视图为view动态调整大小. ### measure的本质 把视图布局使用的"相对值"转化成具体值的 ...

  6. Android学习笔记View的工作原理

    自定义View,也可以称为自定义控件,通过自定义View可以使得控件实现各种定制的效果. 实现自定义View,需要掌握View的底层工作原理,比如View的测量过程.布局流程以及绘制流程,除此之外,还 ...

  7. Android高级:内部类的理解,多态,run和start,wait和seelp,线程安全,堆和栈,synchronized 和volatile ,AsyncTask,Binder的机,view的原理

    目录 成员内部类.静态内部类.局部内部类和匿名内部类的理解,以及项目中的应用 哪些情况下的对象会被垃圾回收机制处理掉? Java中实现多态的机制是什么? String为什么要设计成不可变的? Obje ...

  8. android自定义view实现原理,android随笔之自定义View基本原理

    前言: 在日常的Android开发中会经常和控件打交道,有时Android提供的控件未必能满足业务的需求,这个时候就需要我们实现自定义一些控件,今天先大致了解一下自定义控件的要求和实现的基本原理. 自 ...

  9. Redux相关知识(什么是redux、redux的工作原理、redux的核心概念、redux的基本使用)(十一)

    系列文章目录 第一章:React基础知识(React基本使用.JSX语法.React模块化与组件化)(一) 第二章:React基础知识(组件实例三大核心属性state.props.refs)(二) 第 ...

最新文章

  1. java-第十一章-类的无参方法-计算器运算
  2. GitHub现在已支持函数定义跳转,妈妈再也不怕我记性差了
  3. docker之Dockerfile
  4. 01-Vue博客后台管理页面框架搭建
  5. autojsui界面关闭_autojs 第九次 ui界面交互获取
  6. 每个人对工作都会有自己的想法
  7. AIdl server端监听client是否掉线
  8. 计算机学术英语常见词汇短语总结
  9. 【Computer Organization笔记04】ALU的基本功能,1位ALU,位数扩展以及功能扩展
  10. 苹果Mac如何使用Tuxera NTFS 格式化磁盘?
  11. 网维无盘服务器错误代码,网维大师无盘环境INTER傲腾方案常见问题解答?
  12. android 开机优化,android5.0在开机优化应用的时候,怎么关闭优化强制启动
  13. 中望cad文字显示问号怎么办_中望CAD图纸显示乱码?如何快速解决字体问题
  14. 局域网SDN技术硬核内幕 三 从物到人——SDN走进园区网络
  15. linux内存使用率如何查看,linux内存使用率 linux查看内存
  16. Markdown从入门到精通(+软件推荐)
  17. 百度富文本编辑器配置使用
  18. 解决:VS2010 无法打开“****”,因为此版本的应用程序不支持其项目类型
  19. jieba分词算法总结
  20. 【NP问题】P问题,NP问题,NPC问题,NPH问题

热门文章

  1. 【数字信号处理】相关函数应用 ( 相关函数应用场景 | 噪声中检测信号原理 )
  2. 【FFmpeg】ffmpeg 命令查询二 ( 比特流过滤器 | 可用协议 | 过滤器 | 像素格式 | 标准声道布局 | 音频采样格式 | 颜色名称 )
  3. 【集合论】二元关系 ( 定义域 | 值域 | 域 | 逆运算 | 逆序合成运算 | 限制 | 像 | 单根 | 单值 | 合成运算的性质 )
  4. 自己写的一个简单的购物车的登录购买
  5. [BZOJ5292][BJOI2018]治疗之雨(概率DP+高斯消元)
  6. 在QT中结构体快速从二进制文件中读取数据
  7. String 课后作业2
  8. hihocoder 1061.Beautiful String
  9. win7 无法复制粘贴
  10. ZOJ 1234 Chopsticks(动态规划)