You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android 8.1中Activity横竖屏切换返回后自动旋转重启问题求助

解决Android 8.1(Oreo)横屏返回后Activity重启/自动竖屏的问题

这个问题我之前帮不少开发者排查过,核心原因就是你的Activity配置里的configChanges属性不全,在Android 8.1(API 27)版本中,系统对屏幕方向变化的检测逻辑更严格,导致了这个异常。

直接修复方案

把你Manifest里的Activity配置补充完整,必须加上screenSize和smallestScreenSize这两个配置项,完整的配置应该是这样:

<activity 
    android:name=".Home.TrainingsActivity" 
    android:configChanges="keyboardHidden|orientation|screenSize|smallestScreenSize"
    <!-- 保留你原来的其他属性 -->
    >
</activity>

为什么这样能解决问题?

  • 从Android 3.2(API 13)开始,当屏幕方向切换时,系统会同时触发screenSize(屏幕尺寸)的变化。如果你只声明orientation,系统依然会认为配置发生了重大变化,从而重启Activity来适配新尺寸。
  • Android 8.1对这个规则的执行更严格,之前一些版本可能兼容了不全的配置,但这个版本会严格按照规范触发重启。
  • 加上smallestScreenSize是为了覆盖更多边缘场景,比如多窗口模式切换、不同屏幕密度的设备适配,避免类似的重启问题再次出现。

额外检查项(如果修复后仍有问题)

  • 确保你的横屏目标Activity也配置了相同的configChanges属性,返回时的方向冲突可能和它的设置有关。
  • 检查代码中是否手动调用了setRequestedOrientation()这类强制方向的方法,可能导致返回时系统方向逻辑混乱。
  • 可以重写onConfigurationChanged()方法,手动处理配置变化,而不是依赖系统重启:
@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    // 这里可以根据新的配置调整UI,比如加载横屏/竖屏布局、更新控件位置等
}

内容的提问来源于stack exchange,提问作者Ahmad Arslan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:12:25