在项目中,遇到了需要在某个activity中根据不同的情况下设置为横屏或竖屏,而且不因重力感应改变方向。因此刚开始我没有在manifest里指定方向,而是在代码中强制设置屏幕的方向
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);//当前activity强制设置为横屏
或者是
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);//当前activity强制设置为竖屏
这样设置后可以根据不同的情况调整屏幕的方向,但如果进行锁屏,解锁后通过跟踪log发现activity又重走了OnCreate,当前activity的状态无法保存。正常进入当前activity时会走两次OnCreate,第二次是因为设置屏幕的方向。网上找解决办法,可以在manifest里该activity下添加
android:configChanges="orientation"
可以使activity不因为屏幕方向的改变而重走OnCreate。这样再跟踪log时,解锁后就从OnResume开始走了。