两种不同情况下的Activity生命周期
(1)典型情况下的生命周期
指在有用户参与的情况下,Activity所经过的生命周期的改变。
(2)异常情况下的生命周期
指Activity被系统回收或者由于当前设备的Configuration发生改变重而导致Activity被销毁传重建。
先来看看典型情况下的生命周期分析
看看官方文档的Activity生命周期图
注意以下几点:
(1)onstart()和onResume()从实际使用过程来说差不多,但是onstart()的时候Activity虽然可见啦但是还在后台,onResume()的时候Activity已经显示在前台了。
(2)onstop()和onPause()的区别是onPause()的时候Activity还显示在前台,onstop()的时候Activity在后台不可见啦。
(3)新启动一个Activity时,旧Activity的onPause()会先执行,然后才会启动新的Activity,所以不要在onPause()方法中做重量级的操作,尽量在onstop()中处理
异常情况下的生命周期说明
情况1:资源相关的系统配置发生改变导致Activity被杀死
默认情况下,如果Activity不做特殊处理,那么当系统配置发生改变后,Activity就会被销毁并重新创建,生命周期如下图所示:
注意:当系统配置发生改变之后,Activity会被销毁,其onPause,onStop,onDestroy均会被调用,同时由于Activity是在异常情况下终止的,系统会调用onSaveInstanceState来保存当前Activity的状态,比如说Activity的视图结构。而在onResoreInstanceState中做一些恢复工作,并且在Activity重启之后的为我们恢复这些数据,比如说文本框中用户输入的数据,listView滚动的位置等,OnsaveInstanceState方法的调用时机实在onStop之前,但是它和onPause没有既定的时序关系,它既可能在onPause之前,也可能在之后,onResoreInstanceState方法的调用时机是在onStart之前。
情况2:资源内存不足导致低优先级的Activity被杀死