Activity的生命周期


Activity的生命周期

1.正常情况下

a.启动一个activity:onCreate()-->onStart()-->onResume()

b.启动后进入后台(home键或者跳转其他页面):onPause()-->onStop(),如果是跳转的其他页面是透明的,不 会执行onStop()方法,onPause()方法中不能做重量级的操作,因为onPause()执行之后新的Activity才能执行 onResume();

c.重新进入该页面:onRestart()-->onStart()-->onResume()

d.退出activity:onPause()-->onStop()-->onDestroy();

总结:从整个生命周期来说,onCreate()和onDestory()是配对的,分别标识着Activity的创建和销毁,并且只可能又一次调用;从Activity是否可见来说,onStart()和onStop()是配对的,随着用户的操作或者设备屏幕的点亮和熄灭,这两个方法可能被调用多次;从Activity是否在前台来说,onResume()和onPause()是配对的,随着用户操作或者屏幕的点亮和熄灭,这两个方法可能被调用多次。

2.异常情况下

a.资源相关的系统配置发生改变导致Activity被杀死并重新创建

如:屏幕旋转执行:onPause-->onSaveInstanceState(用于保存异常销毁时的数据,使用一个参数的)-->onStop-->onDestory-->onCreate-->onStart-->onRestoreInstanceState(用于异常销毁重建时数据的恢复)-->onResume

tip:如EditText输入的内容,在销毁重建时会被保存(需要为控件设置id)

b.资源内存不足导致低优先级的Activity被杀死

优先级:前台Activity>可见但非前台Activity>后台Activity

总结:在清单文件中设置configChanges=“orientation|screenSize”,屏幕旋转不会重新创建Activity,而会去调用onConfigurationChanged方法,在这里可以处理一些逻辑。

configChanges的其他属性:如图

Activity的生命周期