Xamarin Android应用在Android12/13横竖屏切换时重启问题咨询
问题原因及解决方案
在Android 12(API 31)及更高版本中,系统对屏幕旋转时的配置变更逻辑做了调整,仅声明ConfigChanges.ScreenSize | ConfigChanges.Orientation已经不足以阻止Activity重启。
具体来说,Android 12+中,横竖屏切换会额外触发以下配置变化:
ConfigChanges.SmallestScreenSize:即使普通非折叠设备旋转,系统也会判定最小屏幕尺寸发生变更ConfigChanges.ScreenLayout:屏幕布局结构的变更
你的Activity配置未包含这两个参数,系统会判定存在未声明的配置变更,因此触发Activity重启。
修复方案
更新Activity的ConfigurationChanges属性,补充缺失的参数,修改后的代码如下:
[Activity(Theme = "@style/MainTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation | ConfigChanges.SmallestScreenSize | ConfigChanges.ScreenLayout)]
如果应用需要适配折叠屏设备,还可额外添加ConfigChanges.FoldingState参数;普通横竖屏场景,上述四个参数已足够。
另外需要注意:添加配置后,需重写OnConfigurationChanged方法处理旋转后的UI适配,避免布局错乱,示例代码:
public override void OnConfigurationChanged(Configuration newConfig) { base.OnConfigurationChanged(newConfig); // 在此处理屏幕旋转后的UI调整逻辑,比如重新加载布局、更新控件状态等 }
内容的提问来源于stack exchange,提问作者huco
相关产品推荐
相关产品推荐

