正常情况下Activity
1.onCreate:表示Activity正在被创建。在这个方法中,可以做一些初始化工作,如调用setContentView去加载界面布局资源、初始化Activity所需数据等。
2.onRestart:表示Activity正在重新启动。当当前Activity从不可见重新变成可见,onRestart被调用。当用户按Home键到桌面或者用户打开了一个新的Activity,这时当前的Activity会暂停,也就是onPause和onStop被执行了,接着用户又回到了这个界面,出现这种情况一般是用户行为导致的。
3.onStart:表示Activity正在被启动,这时活动已经可见,但是还是没有出现在前台,还无法和用户交互。
4.onResume:表示Activity已经可见,出现在前台并开始活动。和onStart都表示活动已经可见,但onStart的时候Activity还在后台。
5.onPause:表示正在停止,正常情况下接着onStop会被调用,特殊情况下快速回到当前Activity,那么onResume会被调用。此时可以做一些数据存储、停止动画等,但是不能太耗时,会影响新Activity的显示,onPause必须执行完,新Activity的onResume才回执行。
6.onStop:表示Activity即将停止,可以做一些稍微重量级的回收工作,但不能太耗时。
7.onDestory:表示Activity即将被销毁,生命周期中最后一个回调,可以做一些回收工作和最终的资源释放。
异常情况下的生命周期
1.资源相关的系统配置发生改变导致Activity被杀死并重新重建
比如说横屏手机和竖屏手机会拿到两张图片,当突然旋转屏幕时,由于系统配置发生改变,在默认下,Activity就会被销毁并且重建,当然也可以阻止系统重建Activity,在配置文件里加入Activity的声明即可:android:configChanges=“orientation|screenSize”, 其中screenSize是防止旋转是Activity重启。在默认情况下,如果我们的Activity不做特殊处理,那么当系统配置改变后,Activity就会被销毁并重建,其生命周期如图
当系统配置发生改变后,Activity会被销毁,其onPause、onStop、onDestory均会被调用,同时由于Activity是被异常终止的,系统会调用onSaveInstanceState来保存当前Activity的状态,这个方法调用时机是在onStop之前,和onPause没有时序关系,即可能在onPause之前调用,也可能在onPause之后。系统只在Activity异常终止的时候才会调用onSaveInstanceState和onRestoreInstanceState来存储数据和恢复数据,其他情况不会触发,但是按Home键或者启动新Activity仍然会单独触发onSaveInstanceState的调用。
2.资源不足导致低优先级的Activity被杀死,正在和用户交互的Activity优先级最高,其次是可见但非前台Activity,如Activity中弹出对话框,优先级最低是后台Activity,系统会按照优先级去杀死目标Activity所在的进程,并在后续通过onSaveInstanceState和onRestoreInstanceState来存储数据和恢复数据。