一、现象:

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


二、分析结论:

这三个字符串是通过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   可以在这里监听语言的变化

更多相关文章

  1. Android(安卓)Activity各种情况下的生命周期分析总结
  2. Android小程序实现切换背景颜色
  3. android 实现SSL握手协商
  4. Android(安卓)UI设计——ExpandableListView控件
  5. webkit for android 4.0 by mogoweb base off Jelly
  6. android设置显示语言
  7. android APN切换cmwap实现
  8. Android中Fragment嵌套Fragment,切换Fragment时不显示视图的原因
  9. Eclipse插件svn和TortoiseSvn版本对应关系

随机推荐

  1. 读取Activity/Processes的PID(Android)
  2. Android如何拍照或选择图片并裁剪
  3. listview 问题总结
  4. Android(安卓)属性动画(Property Animatio
  5. Android设置透明、半透明等效果
  6. android 修改默认APN
  7. Android(安卓)Kotlin开发语言学习笔记
  8. Android开机动画
  9. android页面用jquery窗口大小获取错误问
  10. 【Android】使用msysgit编译Android下的C