小记!华为 8.0系统切换APP内语言(中英文)无效(其他版本手机均有效)。

在设置完语言后进行冷启动,其他手机均可以设置成功,但华为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;}

猜你喜欢

转载自blog.csdn.net/lemon_husky/article/details/79474665