两种不同情况下的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被杀死