大约一年前,我已经实现了自定义区域设置选择,但在 4.1 版本之后,用户开始抱怨不断闪烁的活动。这是我正在使用的代码(从不同的 SO 答案编译):
public final class TestApplication extends Application
{
private Locale desiredLocale = new Locale("ru-RU");
@Override
public void onCreate() {
super.onCreate();
updateLocale(new Configuration());
}
@Override
public void onConfigurationChanged(Configuration newConfig)
{
super.onConfigurationChanged(newConfig);
updateLocale(newConfig);
}
private void updateLocale(Configuration newConfig) {
newConfig.locale = desiredLocale;
Locale.setDefault(desiredLocale);
getBaseContext().getResources().updateConfiguration(newConfig, getBaseContext().getResources().getDisplayMetrics());
}
}
应用程序仅包含一个空活动,在我更改设备方向后,Android 每秒都会重新创建该活动。这是样本的来源。
看起来所有使用这种技术的应用程序都变得无效了。什么是正确的方法?