Activity在锁屏状态下的生命周期是怎么样的呢?
我在此做出总结:
对于锁屏状态,我们分两种情况考虑,1、屏幕方向不会发生改变,2、AndroidManifest.xml文件中没有指定屏幕方向,屏幕方向可以发生改变。
1、在AndroidManifest.xml文件中指定了屏幕方向,则Activity在锁屏和开启屏幕的时候执行的方法和顺序是:
锁屏:
TestActivity onPause--->TestActivity onStop
开启屏幕:
TestActivity onRestart--->TestActivity onStart--->TestActivity onResume
2、如果在AndroidManifest.xml文件中没有指定屏幕方向,则Activity在锁屏时候执行的方法和顺序是:
锁屏:
TestActivity onPause--->TestActivity onStop--->TestActivity onDestory
onPause销毁之后又新建。
TestActivity onCreate--->TestActivity onStart--->TestActivity onResume--->TestActivity
开启屏幕:
TestActivity onResume--->TestActivity onPause--->TestActivity onStop--->TestActivityy onDestory--->TestActivity onCreate--->TestActivity onStart--->TestActivity onResume。对于这种,锁屏后再次开启屏幕会销毁两次,重建两次。
第二种情况的解决办法:在清单文件里activity标签下配置android:configChanges="orientation|screenSize"
。注意application标签下配置不起作用。
补充说明:
1、 landscape 是屏幕横向,portrait 是屏幕纵向 通过android:screenOrientation属性设置
2、 android:configChanges="keyboardHidden|orientation"
这两句为设置横屏和竖屏,在屏幕切换的时候默认为重新走OnCreate方法,当设置了configChange之后就不会再重新走onCreate方法,不会再两次创建两次销毁