我们在 Application 对象的 onCreate 方法中有一些代码,用于更改 ApplicationContext 配置中的默认本地。
它看起来像:
Locale locale = new Locale(sSavedLocale);
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getResources().updateConfiguration(config, getResources().getDisplayMetrics());
然后我们开始我们的主要活动,然后从那里开始我们的其他活动和任务。只要我不导致屏幕旋转等配置更改,一切都可以。如果我旋转屏幕,区域设置将返回到设备默认值,即使应用程序对象保持不变。
深入研究 ActivityThread 和其他内部类的 android 源代码,我可以看到 ApplicationContext 本身,并且 mainThread 中的上下文在配置更改事件中更改回默认值。
这对我来说似乎是一个错误,因为 ii 在应用程序启动时在应用程序级别设置配置我可能希望保持更改,除非发生本地配置更改,即使那样......
我没有检查开放的错误,我确实想应用一个。有人认为我错了,这是可以的行为吗?