简介:
关于android的横竖屏切换,方式很简单概括为两种方式,
第一种是通过manifest设置,第二种是通过代码设置setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)。
用法很简答网上介绍的文章很多,这里不做追述了。
最近发现一个奇怪的横竖屏问题,在华为P20、小米8手机上,从竖屏的ActivityA进入横屏的ActivityB,
然后关闭ActivityB回到ActivityA,此时ActivityA的状态是横屏而不是竖屏。其它手机没有发现类死问题。
查阅了文档和网上的资料都能找到答案,好记性不如烂笔头,特此纪录以防忘记,也希望能给遇到此问题的同学一些借鉴。
问题原因:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)是对整体app生效的,从横屏回到竖屏会同时经历ActivityA和
ActivityB的生命周期(ActivityB的onpause-ActivityA的onresume-ActivityB的onstop等),此时app处在横竖屏的过渡阶段,问题也就出在这。
解决方案:
在横屏的onpause方法中setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT),目的是尽早让app回到竖屏状态。
当然,根据业务的不同,设置竖屏需要有一些业务的判断条件。
protected void onPause() {
super.onPause();
if (isFinishing()) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
}