典型情况下的生命周期分析
1). onCreate:Activity正在创建。生命周期的第一个方法,在这个方法中可以做一些初始化工作,比如调用setContentView去加载界面布局资源,初始化Activity所需数据等。
2).onRestart: 表示Activity正在重新启动。当当前Activity从不可见状态到可见状态时,onRestart方法会被调用。这种情形一般是用户行为导致的。
3).onStrat: 表示Activity正在被启动,这时Activity已经可见了,但是还没出现在前台,还无法和用户交互,这时候可以理解为Activity已经显示出来了,但是我们还看不到。
4). onResume: 表示Activity已经可见了,并且出现在前台并开始活动。
5). onPause: 表示Activity正在停止,正常情况下onStop马上会被调用。此时可以做一些存储数据,停止动画等工作,但是不能太耗时,因为会影响到新Activity的显示。onPause必须先执行完,新Activity onResume才会执行。
6). onStop: 表示Activity即将停止,可以做一些稍微轻重量级的回收工作,同样不能耗时。
7). onDestory: Activity即将被销毁,这是Activity生命周期中最后一个回调,在这里我们可以做一些回收工作和最终的资源释放。
异常情况下的生命周期分析
1).资源相关的系统配置发生改变导致Activity被杀死并重新创建
横竖屏切换:Activity被意外销毁并立刻重新创建新的Activity。`onSaveInstanceState();` 销毁时调用,用来存储数据。 `onCreate();` 新建`Activity`时调用,如果是被重建则参数`Bundle`不为`null`,否则为`null`; `onRestoreInstanceState();` 重建`Activity`时调用,用来恢复数据,此方法一经调用则说明参数`Bundle`不为`null`;
在onSaveInstanceState();
和onRestoreInstanceState();
方法中系统自动为我们做了一定的恢复动作,当Activity
在异常情况下需要重建时,系统会默认为我们保存当前Activity
的视图结构,并且在Activity重启后为我们恢复这些数据。比如文本框中用户输入的数据,ListView滚动的位置等,这些View相关的状态系统都能默认为我们恢复。(自定义View时想要做状态恢复则需要善用onSaveInstanceState();
和onRestoreInstanceState();
方法)