阻止 android activity 在区域设置更改时被销毁

Stop android activity from being destroyed on locale change

我有一个 android 应用程序可以自行处理区域设置更改。 当我离开应用程序并更改语言环境时 "Application->onConfigurationChanged" 被调用(不是 Activity->onConfigurationChanged),当我恢复应用程序时 activity 被销毁并重新启动。

我已经将 android:configChanges="orientation|keyboardHidden|screenSize|locale" 放入清单的 activity 部分。

如何阻止我的 activity 在区域设置更改后重新创建?

对 Android 中配置更改的默认反应 就是摧毁activity。为了避免这种情况发生 区域设置更改,我们有 "locale" 配置更改 在默认 AndroidManifest.xml 中注册,但是, 您还需要注册您正在处理 layoutDirection改变,否则Android不会 调用 onConfigurationChange() 进行语言更改,但是 取而代之的是拆除 activity。

添加 android:configChanges="layoutDirection|locale" 可防止 activity 在恢复时被破坏。

Source

您可以将此添加到清单文件中的 activity,android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"