View 是在Activity 中使用到的,所以在自定义View的时候,我们需要了解Activity 生命周期方法和View的生命周期方法调用先后顺序。 
见如下图

(1) 在Activity onCreate方法中初始化了View , 调用了View 的onFinishInflate 
(2) 在执行完 Activity的 onPostResume方法之后(第一次onResume之后)才真正开始了View的绘制工作: onAttachedToWindow –> onMeasure –> onSizeChanged –> onLayout –> onDraw

当按住锁屏键的时候,Activity和View生命周期发生变化:

 
Activity onPause之后 调用了 View的 onSaveInstanceState方法

当重新回到页面的时候,Activity和View的生命周变化: 
 
View的生命周期方法没有被调用

当点击回退的时候,Activity和View的生命周期发生变化: 
 
Activity onPause -> onStop -> onDestroy 
onDestroy之后 调用了 View的onDetachedFromWindow方法

View 的生命周期为 
[改变可见性] –> 构造View –> onFinishInflate –> onAttachedToWindow –> onMeasure –> onSizeChanged –> onLayout –> onDraw –> 
onDetackedFromWindow

总的可以归结三点:

  • (1) 在Activity onCreate方法中初始化了View 的时候, 调用了View 的onFinishInflate
  • (2) 在执行完 Activity的 onResume 方法之后,才真正开始了View的绘制工作:onMeasure –> 
    onSizeChanged –> onLayout –> onDraw
  • (3) onMeasure,onSizeChanged,onLayout,onDraw可能由于setVisible或onresume调用多次,而onAttachedToWindow与onDetachedFromWindow在创建与销毁view的过程中只会调用一次

View的生命周期方法和Activity生命周期方法关系相关推荐

  1. 精通Android自定义View(十六)invalidate方法和requestLayout方法

    1 简述 requestLayout方法会导致View的onMeasure.onLayout.onDraw方法被调用:invalidate方法则只会导致View的onDraw方法被调用 2 reque ...

  2. 精通Android自定义View(十五)invalidate方法和postInvalidate方法

    1 概述 invalidate方法和postInvalidate方法都是用于进行View的刷新,invalidate方法应用在UI线程中,而postInvalidate方法应用在非UI线程中,用于将线 ...

  3. Node.js的环境搭建方法和 npm 的使用方法

    Node.js的环境搭建方法和 npm 的使用方法 Node.js 环境的搭建 Node.js 介绍 Node.js 下载 配置Node.js node.js 测试 npm(包管理器)使用方法 npm ...

  4. [Java 基础] 深入理解List的toArray()方法和toArray(T[] a)方法

    深入理解List的toArray()方法和toArray(T[] a)方法 这两个方法都是将列表List中的元素转导出为数组,不同的是,toArray()方法导出的是Object类型数组,而toArr ...

  5. 联想集群超算LICO初次使用踩坑说明(遇到的错误,一些使用方法和singularity新建容器方法)

    联想集群超算LICO初次使用踩坑说明(遇到的错误,一些使用方法和singularity新建容器方法) 说明 本文主要写一些我这几天初次使用LICO的过程中遇到的一点问题和解决的办法,还有一些模块的规范 ...

  6. JavaSE学习之路:Idea小技巧一键生成标准JavaBean(一键生成构造方法和Setter和Getter方法)

    Idea小技巧一键生成标准JavaBean(一键生成构造方法和Setter和Getter方法) 方法1:快捷键 快捷键:alt+insert或alt+fn+insert 1.生成有参和无参构造函数 p ...

  7. 深入理解List的toArray()方法和toArray(T[] a)方法

    深入理解List的toArray()方法和toArray(T[] a)方法 这两个方法都是将列表List中的元素转导出为数组,不同的是,toArray()方法导出的是Object类型数组,而toArr ...

  8. CString的Trim()方法和TrimStrat()和TrimEnd()方法,TrimRight()和TrimLeft() 方法

    一. CString的Trim()方法和TrimStrat()和TrimEnd()方法.这三个方法用于删除字符串头尾出现的某些字符. Trim()删除字符串头部及尾部出现的空格,删除的过程为从外到内, ...

  9. Fragment生命周期与宿主Activity生命周期

    当启动activity是,同时启动activity里面的fragment,各生命周期的起调流程 11-22 16:51:22.051 8358-8358/com.txjifei.mapclient.l ...

最新文章

  1. 记一次 MySQL 的慢查优化
  2. 用c实现跨平台异常捕获机制 1
  3. 神经网络neural network简单理解
  4. 精读《谈谈 Web Workers》
  5. Docker(二) docker帮助、镜像及容器相关操作命令介绍
  6. 蓝桥杯 BASIC-2 基础练习 01字串
  7. php判断是否存在http,php获取http-header来判断文件是否存在
  8. java遗传算法实例_遗传算法的基本概念和实现,附Java实现案例!
  9. 行业json数据以及elementui级联格式
  10. 为 github markdown 文件生成目录(toc)
  11. FatSecret Platform API
  12. HTML5游子吟网页的完整代码,《游子吟》教学案
  13. 【算法】扩展卢卡斯详解
  14. python产品质量分析报告范文_Python Jinja2 徒手生成数据分析报告
  15. 从外包公司到今日头条offer,吐血整理
  16. 怎样用苹果手机看html文件在哪里,怎么在电脑上打开苹果手机上的文件?
  17. 《JavaEE初阶》HTTP协议和HTTPS
  18. angular基础学习
  19. 十大经典排序算法及比较与分析 ( 动画演示 ) ( 可视化工具 )
  20. 乐清高考2021成绩查询,2021年乐清高考状元名单公布,乐清文理科状元是谁多少分...

热门文章

  1. python哪些是可变对象_什么是Python可变对象和不可变对象
  2. iscsi发起程序找不到目标_3分钟学会程序员“面试回答规范”,不怕找不到工作的里面请...
  3. minicom的按键控制_minicom使用指南
  4. elment-ui文件上传详解
  5. 大智慧825 自选股 导出_互联网技术更新智慧党校迎来发展契机-威尔 WEDS-BP31_济南考勤机行情...
  6. 5、计算机图形学——着色与光照模型
  7. python psycopg2_Ubuntu 安装 PostgreSQL 和 python-psycopg2基础教程(以及错误解决)
  8. Java程序的运行原理及JVM的启动是多线程的吗?
  9. windows10远程桌面连接及问题解决
  10. Android 之 布局训练