您的位置:首页 > 移动开发 > Android开发

Android M中切换语言后自动规则选项内容不更新问题

2016-05-23 10:29 471 查看
一、现象:

切换语言,进入 设置——提示音和通知——请勿打扰——自动规则 ,三个规则选项翻译没有更新到切换的语言。

二、分析结论:

这三个字符串是通过ZenModeHelper.java中的appendDefaultScheduleRules()和appendDefaultEventRules()两个方法获取的:

rule1.name = mContext.getResources().getString(R.string.zen_mode_default_weeknight_name);

rule2.name = mContext.getResources().getString(R.string.zen_mode_default_weekends_name);

rule.name = mContext.getResources().getString(R.string.zen_mode_default_events_name);

appendDefaultScheduleRules()和appendDefaultEventRules()两个方法是在ZenModeHelper构造函数中调用,ZenModeHelper对象是在NotificationManagerService.java中初始化,但是NotificationManagerService这个service只在开机的时候启动一次,切换语言并不会让这个service关闭再重启,所以不会重新初始化ZenModeHelper对象,也就不会获取切换语言之后的字符串,必须重启手机这三个字符串的翻译才生效。

三、解决方案:

目前Nexus5也有同样的问题,属于Google原生的问题,如果一定要解决,那就得让ZenModeHelper对象重新初始化,或者把NotificationManagerService重新启动,或者在某些地方调用appendDefaultScheduleRules()和appendDefaultEventRules()这两个方法。

This issue is Google Native issue,zen_mode_default_weeknights_name,

zen_mode_default_weekends_name and zen_mode_default_events_name, these

three strings were acquired by method appendDefaultScheduleRules() and

appendDefaultEventRules() when ZenModeHelper object initialization, but

ZenModeHelper object created in NotificationManagerService, and

NotificationManagerService only start at device

boot,NotificationManagerService will not restart when switch language,

so if want these three strings become effective, must reboot your

device.

[PR-2121896]

LocalePicker.java   可以在这里监听语言的变化
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Frameworks Android