监听系统语言变化
监听系统语言变化,有两种方法:一种通过onConfigurationChanged回调,另一种监听系统语言变化相关的广播。
1、configChanges
在AndroidManifest.xml文件中,对应的Activity节点下添加配置android:configChanges。关于Configure参考《onConfigurationChanged()及屏幕横竖屏锁定》
<activity
android:name=".LanguageActivity"
android:configChanges="locale|layoutDirection">
</activity>注意只添加一个locale是不行的,还得需要layoutDirection。
同时重写Activity中的onConfigurationChanged(Configuration newConfig)方法:
public void onConfigurationChanged(@NonNull Configuration newConfig) {
super.onConfigurationChanged(newConfig);
Locale locale;
//注意SDK版本兼容判断
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
locale = newConfig.getLocales().get(0);
} else {
locale = newConfig.locale;
}
}切换语言时,应用不会重启,而是走调用onConfigurationChanged(Configuration newConfig)的生命周期。

2、通过广播
监听系统语言发送变化的广播android.intent.action.LOCALE_CHANGED
action android:name="android.intent.action.LOCALE_CHANGED"关于BroadcastReceiver这里不再多述,参考《BroadcastReceiver:广播的使用》。

