1.正常情况
正常启动的过程中,他们被调用的顺序是 onCreate -> onStart -> onResume, 在被干掉的时候顺序是onPause -> onStop -> onDestroy ,
这样就是一个完整的生命周期。程序正运行着呢来电话了,新出的一个全屏的Activity,那么:onPause->onStop ,恢复的时候onStart->onResume ,
如果打断这个应用程序的是一个Theme为Translucent 或者Dialog 的Activity那么只是onPause ,恢复的时候onResume 。
(Activity未被完全覆盖只是失去焦点:onPause--->onResume)
2. 返回键与Home键区别
back键默认行为是finish处于前台的Activity的,即Activity的状态为Destroy状态为止,再次启动该Activity是从onCreate开始的。Home键默认是stop
前台的Activity,而不是Destroy,若再次启动它,会调用onSaveInstanceState() 方法,保持上次Activity的状态则是从OnRestart开始的---->onStart()
--->onResume()。
3.如果后台的Activity由于某原因被系统回收了,如何在被系统回收之前保存当前状态
当你的程序中某一个Activity A 在运行时中,主动或被动地运行另一个新的Activity B,这个时候A会执行 onSaveInstanceState。B 完成以后又会来找A,
这个时候就有两种情况,一种是A被回收,一种是没有被回收,被回收的A就要重新调用onCreate()方法,不同于直接启动的是这回onCreate()里是带上参数
savedInstanceState,没被收回的就还是onResume就好了。
4. 横竖屏切换的生命周期
1).不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次
2)设置Activity的android:configChanges="orientation"时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次
3)设置Activity的android:configChanges="orientation|keyboardHidden"时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法