Activity的生命周期
Activity 有三个状态:
当它在屏幕前台时,响应用户操作的Activity, 它是激活或运行状态.
当它上面有另外一个Activity,使它失去了焦点但仍然对用户可见时(如右图), 它处于暂停状态.
当它完全被另一个Activity覆盖时则处于停止状态.
* 开启:onCreate()-->onStart()-->onResume()
* 关闭:onPause()-->onStop()-->onDestroy()
* 最小化:onPause()-->onStop()
* 最大化:onRestart()-->onStart()-->onResume()
BACK键
按Back键时,应用程序将结束,将先后调用onPause()->onStop()->onDestory()三个方法。
再次启动App时,会执行onCreate()->onStart()->onResume()
HOME键
当我们按HOME的时候,Activity先后执行了onPause()->onStop()这两个方法,这时候应用程序并没有销毁。而当我们从桌面再次启动应用程序时,则先后分别执行了onRestart()->onStart()->onResume()三个方法
注意:当Activity在后台时候,如果系统内存不够用,后台的Activity很有可能会被强制销毁回收内存的,那么一定会触发onSaveInstanceState(Bundle outState) 方法,我们可以把想保存的数据保存在 outState对象里,等Activity被重新创建执行onCreate(Bundle saveInstanceState) 从参数saveInstanceState再读取保存的数据
- 锁屏:
onPause()->onStop()
-
解锁:
onStart()->onResume()
ActivityA 打开 ActivityB
- A:onPause()
- B:onCreate()
- B:onStart()
- B:onResume()
- A:onStop()
- 但是,如果ActivityB的样式是Dialog样式,B没有完全遮挡A,ActivityB的生命周期跟刚才一样,但是ActivityA并没有执行onStop()
ActivityB 返回 ActivityA
依次会执行:
- B:onPause()
- A:onRestart()
- A:onStart()
- A:onResume()
- B:onStop()
- B:onDestory()
横竖屏切换activity的生命周期
* 先销毁activity,然后在重新创建一个新的activity页面
* 固定activity的屏幕朝向 screenOrientation
* landscape :横屏
* portrait :竖屏,默认方向
* sensor :自适应
* 使activity不敏感屏幕朝向的变化
android:configChanges="orientation|keyboard|screenSize"