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 可以在这里监听语言的变化
切换语言,进入 设置——提示音和通知——请勿打扰——自动规则 ,三个规则选项翻译没有更新到切换的语言。
二、分析结论:
这三个字符串是通过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 可以在这里监听语言的变化
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories