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

本文针对华为8.0系统手机在更改语言设置后冷启动失效的问题提供了两种解决方案:一是通过延时处理来确保设置流程完成;二是优化activity基类中的getResources方法以确保正确使用application的context。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值