无法在活动和远程服务之间共享SharedPreferences - Android错误或功能?

Ste*_*fan 1 service android sharedpreferences

我想在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?任何建议将不胜感激.

Ste*_*fan 8

答案就在这里,从x到x90:https://stackoverflow.com/a/8723589/1127492

使用MODE_MULTI_PROCESS这是Gingerbread(Android 2.3)之前和之前的遗留(但未记录)行为,并且在定位此类版本时会隐含此标志.对于针对大于Android 2.3的SDK版本的应用程序,必须根据需要显式设置此标志.