Android中横竖屏切换无效问题

2018-08-23  本文已影响0人  风之枫

简介:

关于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);

}

}

横竖屏Activity的生命周期
上一篇 下一篇

猜你喜欢

热点阅读