android:configChanges="locale|layoutDirection" 语言变化配置

最近项目中出现了,切换语言,activity重启问题,记录一下切换语言重启的解决方式
添加属性:

android:configChanges to locale|layoutDirection

当改变语言设置后,该属性也会成newConfig中的一个mask位。所以ActivityManagerService(实际在ActivityStack)在决定是否重启Activity的时候总是判断为重启。
当在android:configChanges 中同时添加locale和layoutDirection时,activity是不会发生重启了,若项目需要将显示的textview重新setText,切换语言将完美解决。

官方文档里是这样说的
切换语言

To avoid Activity recreation when the locale changes, the Activity hosting the Compose code needs to opt out of locale configuration changes. To do so, you set
android:configChanges to locale|layoutDirection
为避免在发生语言区域更改时重新创建 Activity,托管 Compose 代码的 Activity 需要停用语言区域配置变更。为此,请将 android:configChanges 设置为 locale|layoutDirection。

还有一些其他的变更:

App display size //应用显示大小
Screen orientation //屏幕方向
Font size and weight //字体大小和粗细
Locale //语言区域
Dark mode versus light mode //深色模式与浅色模式
Keyboard availability //键盘可用性

你可能感兴趣的:(android:configChanges="locale|layoutDirection" 语言变化配置)