部分国产ROM设备插拔充电线时Android Activity自动重启问题求助
根因分析
插拔充电线会触发Android系统uiMode配置项变更,原生系统逻辑下如果应用未在Activity的configChanges属性中声明处理该变更,系统会默认销毁并重建Activity。部分国产ROM对uiMode变更的触发逻辑做了定制调整,触发阈值比原生AOSP、三星等国际厂商ROM更低,因此仅在特定设备上出现该问题。
你当前的Activity配置中仅声明了处理orientation|screenSize变更,未覆盖uiMode,因此会触发重建逻辑。
解决方案
优先推荐以下修改方式,兼容性最好:
在所有Activity的Manifest配置中,给android:configChanges追加uiMode参数,修改后示例如下:
<activity android:name=".Screen.ChatScreen" android:configChanges="orientation|screenSize|uiMode" android:theme="@style/AppTheme.AppBarOverlay" android:windowSoftInputMode="stateAlwaysHidden|adjustResize" />
追加后系统会将uiMode变更交由应用自行处理,不会再主动销毁重建Activity。如果你的业务不需要针对充电状态切换做特殊UI调整,无需额外实现onConfigurationChanged回调逻辑即可正常运行。
异常兼容
如果添加uiMode参数后仍有个别设备复现问题,可以再追加keyboard|keyboardHidden|navigation参数到android:configChanges中,部分深度定制的ROM在插拔充电线时会误触发键盘、导航栏相关的配置变更通知,追加参数后即可解决。
内容的提问来源于stack exchange,提问作者famfamfam
相关产品推荐
相关产品推荐

