国际化适配之切换语言
8.0之前切换语言只要更新配置几行代码就可以搞定了,全局调用getResource()
得到的都是同一个对象
如:
Locale locale = new Locale(lang, country);
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
context.getResources().updateConfiguration(config, context.getResources().getDisplayMetrics());
8.0之后(貌似7.1.1也一样)如上做了只会在当前Context下有效,因为每次打开一个新的Activity 调用getResouces()
都是一个新的对象,不再是唯一的全局变量了。
看了一点源码,现在拿到的
Resouce
会用一个弱引用保存,方便资源回收。猜测现在加载资源可能是分块加载,不会一下子全部加载到内存当中来,所以才会根据情况去创建Resource