1、Activity 的生命周期
- onCreate:Activity 正在被创建,通常做一些初始化的操作,比如:调用 setContentView 去加载界面布局资源,初始化 Activity 的数据。
- onStart:Activity 正在被启动,Activity 即将开始,这个时候Activity 已经可见,但是还没有出现在前台,无法和用户进行交互,这个时候 Activity 可以理解为已经显示了,但是我们还看不到,此时无法获取焦点。
- onResume:Activity 已经前台可见,此时用户可以获取焦点,进行界面交互。
- onPause:当系统将要恢复一个之前的活动。这是一个有代表性的常常用于提交未被存储的改动信息为持久数据,停止动画和消耗CPU的东西等。实现该方法必须要特别的迅速,因为在此方法返回之前,下一个活动将不会恢复。如果活动将返回到前台则接下来调用onResume(),如果要隐藏到用户看不见的地方时,则调用onStop();
- onStop:当另一个活动被恢复且完全覆盖该活动,而该Activity将不在展示给用户时调用。这种情况将发生在一个新的活动将被开始,一个退出的活动将被恢复,又或者该活动将要被销毁。如果该活动将恢复与用户交互则调用onRestart(),如果该活动将被销毁则调用onDestory()。
- onDestory:Activity被销毁钱最后一个被调用的方法。这个方法将会发生因为活动将会结束(在活动中调用finish()方法,或者系统临时销毁该实例节约空间。你可以使用isFinishing()方法区别这两种场景)。
2、Activity 的四种状态
- Running状态:一个新的Activity启动入栈后,它在屏幕最前端,处于栈的最顶端,此时它处于可见并可和用户交互的激活状态。
- Paused状态:当Activity被另一个透明或者Dialog样式的Activity覆盖时的状态。此时它依然与窗口管理器保持连接,系统继续维护其内部状态,它仍然可见,但它已经失去了焦点,故不可与用户交互。
- Stopped状态:当Activity不可见时,Activity处于Stopped状态。当Activity处于此状态时,一定要保存当前数据和当前的UI状态,否则一旦Activity退出或关闭时,当前的数据和UI状态就丢失了。
-
Killed状态:Activity被杀掉以后或者被启动以前,处于Killed状态。这是Activity已从Activity堆栈中移除,需要重新启动才可以显示和使用。
activity声明周期图 1
activity声明周期图 2
3、关于Activity切换生命周期变化:
- MainActivity 启动 ActivityA:
I/MainActivity: MainActivity onCreate
I/MainActivity: MainActivity onStart
I/MainActivity: MainActivity onResume
I/MainActivity: MainActivity onPause
I/MainActivity: ActivityA onCreate
I/MainActivity: ActivityA onStart
I/MainActivity: ActivityA onResume
I/MainActivity: MainActivity onStop
I/MainActivity: ActivityA onPause
I/MainActivity: MainActivity onRestart
I/MainActivity: MainActivity onStart
I/MainActivity: MainActivity onResume
I/MainActivity: ActivityA onStop
I/MainActivity: ActivityA onDestroy
当前界面如果将下拉菜单滑动下来:
嗯嗯比较奇怪,就是什么生命周期都不走!!!横竖屏选择:
1.如果配置了
android:configChanges="orientation|keyboardHidden|screenSize"
横竖屏选择的生命周期:
I/MainActivity: ActivityA onConfigurationChanged
I/MainActivity: ActivityA onConfigurationChanged
注意:其他的生命周期并没有走,只走了这几个!!
2.如果没有配置configChanges,就不会回调onConfigurationChanged ,其生命周期如下:
I/MainActivity: ActivityA onPause
I/MainActivity: ActivityA onSaveInstanceState
I/MainActivity: ActivityA onStop
I/MainActivity: ActivityA onDestroy
I/MainActivity: ActivityA onCreate
I/MainActivity: ActivityA onStart
I/MainActivity: ActivityA onResume