学习笔记01.activity的生命周期
来源:互联网 发布:淘宝网开发者 编辑:程序博客网 时间:2024/06/05 19:27
做android也有段时间了,但总是感觉自己的知识很散乱,今天开始就整理整理。我们就从activity开始吧。
我们不扯东扯西,我们把activity生命周期中的每个方法搞清楚,各种切换中的生命流程梳理搞清楚,我想我们也就达到目的了。
activity的生命周期包括:onCreate、onStart、 onRestart、onResume、onPause、onStop、onDestroy。
从名称上可以看出 onCreate--onDestroy、onStart--onStop、onRestart--onPause有着相对用的关系,安卓初学者可以按照这个方式去记忆。
onCreate:一个activity被创建,会最先调用此方法,它是生命周期 的第一个方法,此方法中主要做一些初始化工作,比如加载布局资源,初始化activity所需的数据等。该方法
在正常的生命周期内只会被执行一次。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
1.该方法中有一个Bundle类型的参数savedInstanceState,下面我们来说说他作用:
举个例子:
资源相关的系统配置发生改变导致activity被杀死并重建:比如从竖屏切换到横屏的过程中,因为横竖屏对应的资源文件,系统配置的不同,activity会被先被销毁后重建。此过
程中activity的主要几个生命周期为 onSaveInstanceState-----onDestroy------------->>onCreate-----onRestoreInstanceState。
接着我们说一下onSaveInstanceState方法和onRestoreInstanceState方法。
onSaveInstanceState:(保存数据)
系统只有在activity即将被销毁并且有可能被重新创建时才会调用此方法,就比如上面的情况。换言之activity如果是正常被销毁则不会调用该方法,该方法执行在onDestroy之
前。同理当activity被重新创建以后也才会调用onRestoreInstanceState方法。此方法中会把需要保存的数据封装成一个Bundle对象,当此activity被重新创建时将该Bundle对象
传递给onCreate、onRestoreInstanceState方法。
onRestoreInstanceState:(恢复数据)
此方法会取出Budle中的数据将activity恢复到原来的状态。所以正常启动的activity此方法是不会被调用的,而onCreate方法中的savedInstanceState的值也为null
2.setContentView(R.layout.activity_main):加载resource--layout--activity_main对应的布局资源,这个方法在我看来不必深究,我们只要知道他是加载我们当前activity所对应
的布局资源即可。
onStart:表示activity正在被启动,此时的activity已经可见了,只是还未出现在前台无法跟用户进行交互。另外此方法可能会被多次执行,这一点要和onCreate区分开。
onRestart:表示一个activity正在被重启,一般来说是activity在未被销毁的情况下,从完全不可见到可见会调用该方法。这里要和另一种情况做一下区分,举两个例子:
1.从activity A启动activity B,再点击返回键回到activity A . activity A具体生命周期如下:
onPause--onStop------> onRestart--onStart--onResume。(可以看出此时onStart再次被执行了)
这里有一种特殊情况,当被启动的activity B采用的是透明主题时,activity A的onStop方法不会被执行,具体的生命流程就类似下面的这种情况。
2.activity A 中弹出一个dialog,dialog消失回到activity activity A具体生命周期如下:
onPause-------> onResume。 弹出dialog activity A 仍然是可见的所以不会调用onRestart方法。
这里我只列举了这两种情况,其他的复杂情况读者可以重写对应的生命周期方法,做相关的打印,来探究其具体的生命流程。
onResume:表示当前的activity已近显示到前台开始活动,并且可以和用户进行交互。这里可以和 onStart 来做对比,此方法也可能会被多次执行。
onPause:表示activity正在被停止,它的实质是将activity由活动状态转变为非活动状态。
onStop :它的实质是将activity由可见状态转变为不可见状态。
所以你理解了每一个方法它的实质作用,你不用打印,你都能感觉出某一个方法他是否会被调用。
onDestroy:销毁当前activity,做一些回收工作。
主要切换过程的生命周期下图给出了详细过程。
最后这是我第一次写博客,文章中有不对的地方,希望大家帮我指出来,免得误导别人,同时我们也可以一起进步不是。
- 学习笔记01.activity的生命周期
- Android学习笔记--Activity的生命周期
- (Android学习笔记)Activity的生命周期
- Android学习笔记4 Activity的生命周期
- Android基础学习笔记:Activity的生命周期
- Android学习笔记之一 Activity的生命周期
- android学习笔记2:Activity的生命周期
- Android学习笔记-Activity的生命周期
- Android学习笔记----Activity的生命周期
- Android学习笔记3 Activity的生命周期
- Activity的生命周期(android学习笔记)
- Activity和Service的生命周期-----Activity学习笔记(一)
- Activity的生命周期笔记
- Activity的生命周期笔记
- Activity的生命周期学习
- activity的生命周期学习
- activity的生命周期学习
- android学习笔记 -- Activity生命周期
- composer 使用
- 浅谈C++中的this指针
- 每天一个Linux命令(40):killall
- Tomcat原理详解和各种集群的实现(转自:http://harisxiong.blog.51cto.com/7513022/1304746)
- SQLSERVER删除表内重复数据
- 学习笔记01.activity的生命周期
- 进程间通信的8种方式
- Java开源图片工具Thumbnailator简介
- myEcplise中在maven中添加Oracle jdbc包
- Android程序的结构---重新认识Android(1)
- Python——字典
- GSON 转换JSON为JAVA对象的日期坑
- libpcap编程(7)最后一篇
- mysql函数