分屏模式下调整应用窗口大小超过2/3时主Activity重启如何预防?
分屏调整窗口尺寸触发Activity重启解决方案
这个问题是Android系统的默认行为触发的:当应用窗口的尺寸变更幅度超过系统预设的配置变更阈值时,系统会判定为应用配置发生了关键变更,默认销毁并重建对应Activity,你遇到的2/3尺寸阈值就是系统预设的触发临界点。
你可以按以下步骤排查解决:
- 第一步:在
AndroidManifest.xml中为对应的主Activity添加配置变更声明,告知系统不需要由系统处理这类配置变更触发的重建逻辑,示例配置如下:
<activity android:name=".你的主Activity类名" android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation" android:resizeableActivity="true"> <!-- 其他activity配置 --> </activity>
- 第二步:在主Activity中复写
onConfigurationChanged方法,如果你的应用不需要针对不同窗口尺寸做特殊布局调整,直接空实现即可;如果需要适配不同窗口尺寸的布局,在该方法内执行对应的布局调整逻辑:
@Override public void onConfigurationChanged(@NonNull Configuration newConfig) { super.onConfigurationChanged(newConfig); // 如需适配不同窗口尺寸,在这里添加布局调整逻辑 }
- 第三步:排查主Activity中是否存在主动触发重建的自定义逻辑:检查
onMultiWindowModeChanged、onPictureInPictureModeChanged等分屏相关回调中,是否存在调用recreate()或者重启Activity的代码,如有直接移除即可。 - 第四步:如你的应用targetSdkVersion低于26(Android 8.0),建议将targetSdkVersion升级至26及以上,低版本系统对分屏模式的兼容性处理更容易触发Activity自动重建问题。
内容的提问来源于stack exchange,提问作者tomtript
相关产品推荐
相关产品推荐

