Activity生命周期
首先我们来看一张图,我对上面的一些方法在图片上写了一些自己的理解
除了图上的方法外还有两个重要的方法
onSaveInstanceState()和onRestoreInstanceState()
onSaveInstanceState的调用遵循一个重要原则,即当系统“未经你许可”将要销毁你的activity时,则onSaveInstanceState会被系统调用,这是系统的责任,因为它必须要提供一个机会让你保存你的数据。
onRestoreInstanceState被调用的前提是,activity A“确实”被系统销毁了,而如果仅仅是停留在有这种可能性的情况下,则该方法不会被调用,例如,当正在显示activity A的时候,用户按下HOME键回到主界面,然后用户紧接着又返回到activity A,这种情况下activity A一般不会因为内存的原因被系统销毁,故activity A的onRestoreInstanceState方法不会被执行
另外,onRestoreInstanceState的bundle参数也会传递到onCreate方法中,我们也可以选择在onCreate方法中做数据还原。
现在让我们分别在几种不同的情况下来测试Activity生命周期中各方法是怎么调用的,一个测试Activity生命周期的应用程序界面:
1、
1)运行Activity :
onCreate()-->onStart()-->onResume()
2)点击返回键:
onPause()-->onStop()-->onDestroy()
2、
1)运行Activity
onCreate()-->onStart()-->onResume()
2)点击Home(小房子形状)
onSaveInstanceState()-->onPause()-->onStop()
3)长按Home重新返回到Activity中:
onRestart()-->onStart()-->onResume();
4)点击返回键:
onPause()-->onStop()-->onDestroy();
3、
1) 运行Activity
onCreate()-->onStart()-->onResume();
2)切换到另外一个Activity(SecondActivity)时,原Activity:
onSaveInstanceState()-->onPause()-->onStop()
①:按 返回键返回到第一个Activity时,第一个Activity:
onRestart()-->onStart()-->onResume();
②:在第二个Activity中通过Button控件跳转回第一个Activity时:
onCreate()-->onStart()-->onResume();
4、
创建对话框样式的DialogActivity时Activity生命周期的状态:
1)运行Activity:
onCreate()-->onStart()-->onResume();
2)点击Show My Dialog按钮切换至DialogActivity,第一个Activity状态:
onSaveInstanceState()-->onPause();
我们可以看到DialogActivity是半透明的,第一个Activity是可见的。
3)按返回键返回第一个Activity:
onResume();
5、
创建AlterDialog退出提示对话框
当县级Show a real Dialog对话框并返回,此时不能触发Activity实例的状态变化,也不会调用其生命周期中任何函数:
但点击确定退出程序时:
onPause()-->onStop()-->onDestroy();
这就是在这几种情况下Activity的生命周期。