Activity异常销毁生命周期

Activity是android开发过程中使用的最多的组件,正常模式下activity的生命周期是这样的:


Activity异常销毁生命周期_第1张图片

应该每一位android开发者在接触android的时候就看过这张,这张图描绘是Activity在正常启动退出情况下的生命周期图,那么异常情况下的生命周期又是怎样的呢?

首先,什么样的情况算是异常呢?

情况1.资源相关的系统配置发生改变导致Activity被杀死并重新创建(如横竖屏切换)

默认情况下,当Activity不做任何处理的话,Activity会被销毁并重新创建,onPause,onStop,onDestory均会被调用,但是在onStop被调用之前系统会调用onSaveInstanceState方法保存activity的当前状态,这个方法只会在activity异常终止情况下才会调用,与onPause没有先后次序,可能在onPause之前,也可能在其后,在Activity重新创建时,系统会将onSaveInatanceState保存的Bundle对象作为参数同时传递给onRestoreInstanceState和onCreate方法,onRestoreInstanceState方法是在onStart方法之后!

情况2:资源内存不足导致低优先级的Activity被杀死

优先级:前台Activity > 可见但非前台Activity > 后台Activity,其生命周期与前面一致

说了上面两种情况,那有没有办法在系统配置发生改变后Activity不重新创建呢?

Google当然会想到这点,我们可以通过指定activity的configChanges属性来控制,configChange的项目和含义如下图:


Activity异常销毁生命周期_第2张图片

你可能感兴趣的:(Activity异常销毁生命周期)