我想在 SharedPreferences 更改时更新远程服务。以下内容用于 API 级别 8 (Android 2.2)。
我的活动有一个OnPreferencesChangedListener
它通过服务绑定器对象调用远程服务。远程服务的接口提供了一种方法prefsChanged(void)
这是由听者调用的。之后,接口方法会计算警报触发某些操作的新时间。
这次也被保存到SharedPreferences
并发送广播。我的活动收到了广播,现在可以显示新的警报时间。
活动和远程服务获取SharedPreferences
通过调用静态方法来获取对象GetPrefs(Context)
哪个答案PreferenceManager.getDefaultSharedPreferences(Context)
.
在 API 级别 15 (Android 4.0.3) 中,此功能不再起作用。调试显示远程服务发现 SharedPreferences 的其他版本持有不同的(较旧的?)值。从活动和远程服务记录时,记录 SharedPreferencesImpl 对象会显示不同的地址。文件系统仅显示一个共享首选项文件。
这是一个错误还是我的代码巧合地适用于 API 级别 8?
任何建议将不胜感激。
答案在这里,感谢 x90:https://stackoverflow.com/a/8723589/1127492 https://stackoverflow.com/a/8723589/1127492
使用 MODE_MULTI_PROCESS 这是 Gingerbread (Android 2.3) 中及之前的遗留(但未记录)行为,并且在针对此类版本时隐含此标志。对于目标 SDK 版本高于 Android 2.3 的应用程序,如果需要,必须显式设置此标志。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)