View的生命周期方法和Activity生命周期方法关系
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生命周期方法关系相关推荐
- 精通Android自定义View(十六)invalidate方法和requestLayout方法
1 简述 requestLayout方法会导致View的onMeasure.onLayout.onDraw方法被调用:invalidate方法则只会导致View的onDraw方法被调用 2 reque ...
- 精通Android自定义View(十五)invalidate方法和postInvalidate方法
1 概述 invalidate方法和postInvalidate方法都是用于进行View的刷新,invalidate方法应用在UI线程中,而postInvalidate方法应用在非UI线程中,用于将线 ...
- Node.js的环境搭建方法和 npm 的使用方法
Node.js的环境搭建方法和 npm 的使用方法 Node.js 环境的搭建 Node.js 介绍 Node.js 下载 配置Node.js node.js 测试 npm(包管理器)使用方法 npm ...
- [Java 基础] 深入理解List的toArray()方法和toArray(T[] a)方法
深入理解List的toArray()方法和toArray(T[] a)方法 这两个方法都是将列表List中的元素转导出为数组,不同的是,toArray()方法导出的是Object类型数组,而toArr ...
- 联想集群超算LICO初次使用踩坑说明(遇到的错误,一些使用方法和singularity新建容器方法)
联想集群超算LICO初次使用踩坑说明(遇到的错误,一些使用方法和singularity新建容器方法) 说明 本文主要写一些我这几天初次使用LICO的过程中遇到的一点问题和解决的办法,还有一些模块的规范 ...
- JavaSE学习之路:Idea小技巧一键生成标准JavaBean(一键生成构造方法和Setter和Getter方法)
Idea小技巧一键生成标准JavaBean(一键生成构造方法和Setter和Getter方法) 方法1:快捷键 快捷键:alt+insert或alt+fn+insert 1.生成有参和无参构造函数 p ...
- 深入理解List的toArray()方法和toArray(T[] a)方法
深入理解List的toArray()方法和toArray(T[] a)方法 这两个方法都是将列表List中的元素转导出为数组,不同的是,toArray()方法导出的是Object类型数组,而toArr ...
- CString的Trim()方法和TrimStrat()和TrimEnd()方法,TrimRight()和TrimLeft() 方法
一. CString的Trim()方法和TrimStrat()和TrimEnd()方法.这三个方法用于删除字符串头尾出现的某些字符. Trim()删除字符串头部及尾部出现的空格,删除的过程为从外到内, ...
- Fragment生命周期与宿主Activity生命周期
当启动activity是,同时启动activity里面的fragment,各生命周期的起调流程 11-22 16:51:22.051 8358-8358/com.txjifei.mapclient.l ...
最新文章
- 记一次 MySQL 的慢查优化
- 用c实现跨平台异常捕获机制 1
- 神经网络neural network简单理解
- 精读《谈谈 Web Workers》
- Docker(二) docker帮助、镜像及容器相关操作命令介绍
- 蓝桥杯 BASIC-2 基础练习 01字串
- php判断是否存在http,php获取http-header来判断文件是否存在
- java遗传算法实例_遗传算法的基本概念和实现,附Java实现案例!
- 行业json数据以及elementui级联格式
- 为 github markdown 文件生成目录(toc)
- FatSecret Platform API
- HTML5游子吟网页的完整代码,《游子吟》教学案
- 【算法】扩展卢卡斯详解
- python产品质量分析报告范文_Python Jinja2 徒手生成数据分析报告
- 从外包公司到今日头条offer,吐血整理
- 怎样用苹果手机看html文件在哪里,怎么在电脑上打开苹果手机上的文件?
- 《JavaEE初阶》HTTP协议和HTTPS
- angular基础学习
- 十大经典排序算法及比较与分析 ( 动画演示 ) ( 可视化工具 )
- 乐清高考2021成绩查询,2021年乐清高考状元名单公布,乐清文理科状元是谁多少分...
热门文章
- python哪些是可变对象_什么是Python可变对象和不可变对象
- iscsi发起程序找不到目标_3分钟学会程序员“面试回答规范”,不怕找不到工作的里面请...
- minicom的按键控制_minicom使用指南
- elment-ui文件上传详解
- 大智慧825 自选股 导出_互联网技术更新智慧党校迎来发展契机-威尔 WEDS-BP31_济南考勤机行情...
- 5、计算机图形学——着色与光照模型
- python psycopg2_Ubuntu 安装 PostgreSQL 和 python-psycopg2基础教程(以及错误解决)
- Java程序的运行原理及JVM的启动是多线程的吗?
- windows10远程桌面连接及问题解决
- Android 之 布局训练