Android用户切换系统语言后,回到App,App重新加载导致的一些问题[android:configChanges=“layoutDirection“]

Android用户切换系统语言后,回到App,App重新加载导致的一些问题

可能导致的问题

App重启,Activity重新创建,业务逻辑重新执行,可能导致:

  1. 某页面,如上层的半透明页面因UI自动重建,存在1个,而后业务重新逻辑执行又创建了1个,此时存在2个相同页面;
  2. 如果在切换系统语言之前,App页面中存在一个等待交互的Dialog,则切换后回到app,将导致Dialog所attach的Activity重建,导致Dialog崩溃、闪退(此情况可以在Activity的onDestroy中销毁Dialog来解决)
  3. 因重建、重新执行业务逻辑可能导致的其它奇奇怪怪的问题。

解决方法

设置android:configChanges="layoutDirection"即可。

虽然Android官方文档(https://developer.android.com/guide/topics/manifest/activity-element#config)说明:
“layoutDirection” 布局方向发生变更 - 例如,自从左至右 (LTR) 更改为从右至左 (RTL)。 在 API 级别 17 中引入。
“locale” 语言区域发生变更 - 用户已为文本选择新的显示语言。

但是,很奇怪的是,设置locale并不起作用(测试环境targetSdkVersion 29,设备小米12 Android 11 or 模拟器api31)。

设置"layoutDirection"是有效的,Activity不会再被重建,而是回调到 onConfigurationChanged(Configuration newConfig),此时App内可酌情处理相关逻辑。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值