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

已配置configChanges仍重启:Android API30设备旋转屏幕时Activity重启问题求助

解决API 30+设备旋转时Activity重启的问题

嘿,我之前在API 30设备上也碰到过一模一样的坑!你已经加了orientation|screenSize,但Android 11(API 30)之后,系统对屏幕配置变化的检测多了一项——smallestScreenSize,如果这个配置项变化时你没在configChanges里声明,Activity还是会触发重启。

第一步:更新AndroidManifest.xml配置

把你的Activity配置里的configChanges改成下面这样,补上smallestScreenSize:

<activity 
    android:name=".ui.activities.MainActivity" 
    android:configChanges="orientation|screenSize|smallestScreenSize" 
    android:screenOrientation="sensor" 
    android:windowSoftInputMode="adjustResize" />

第二步:验证配置是否生效

为了确认旋转时Activity不会重启,你可以在MainActivity里重写onConfigurationChanged方法,打个日志测试:

@Override
public void onConfigurationChanged(@NonNull Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    // 这里可以处理旋转后的UI调整,比如更新布局、重置控件状态等
    Log.d("MainActivity", "屏幕方向变化,Activity未重启!");
}

如果旋转设备时能看到这条日志,说明配置生效了,onCreate不会再被触发执行。

额外排查点(如果还是有问题)

要是改完配置还是重启,你可以检查这几个地方:

  • 有没有在代码里手动调用recreate()或者其他会导致Activity重启的方法?
  • 你的App主题是不是设置了全屏或者特殊窗口属性?有些全屏主题会干扰系统对配置变化的处理,试试切换回默认主题测试下。
  • 有没有第三方库(比如UI框架、广告SDK)偷偷修改了Activity的配置?可以暂时禁用第三方库排查。

对于Android 12(API 31)及以上的设备,如果问题还存在,你可以尝试把screenLayout也加入configChanges,变成orientation|screenSize|smallestScreenSize|screenLayout,不过大部分场景下前面三个配置就足够了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 03:14:07