在设置完语言后进行冷启动,其他手机均可以设置成功,但华为8.0新系统手机无效,最终从如下两点解决。
1、在切换完语言后进行冷启动时,对冷启动进行延时处理。(怀疑是没处理完设置流程,直接杀死进程造成)
//设置语言 private void changeLanguage(int i) { MultiLanguageUtil.getInstance().setConfiguration(i);//自己写的设置方法 new Handler().postDelayed(new Runnable() { @Override public void run() { if (FileUtils.isAndroidM()) { // 7.0以上需要重启(冷启动)应用才能生效 AppUtils.restartApp();//冷启动方法,自己写 } else { // 重新创建Activity AppUtils.restartAppByActivity(); } } },500); }
2、查看activity基类的getResources方法返回的context是否为application的context。(怀疑为其他版本手机对context进行了优化,所以要求不严格)
public Resources getResources() { //自己定义Application获取context的方法Application.getAppContext(); Resources res = Application.getAppContext().getResources(); return res;}