【发布时间】:2015-01-10 20:54:13
【问题描述】:
我也遇到过这个问题,花了相当多的时间才弄清楚,所以我分享一下我的经验。
我正在使用 SharedPreferences 侦听器在 BroadcastReceiver(位于 AlarmManager 事件上,但对主题无关紧要)和我的 Activity 之间传递数据。以前我将意图用于相同目的,但我想到了一个想法(疯狂?可能使用 Handlers 是更好的模式?),通过 SharedPreferences 侦听器来实现。
所以我在Activity OnSharedPreferenceChangeListener 中注册,在BroadcastReceiver 中我只是在SharedPreferences 上使用一个编辑器,在其中输入一个值,然后在Activity 中接收它。到目前为止看起来很普通。它可以工作,BUT 不适用于 integer 偏好。所以,例如,如果我打电话
pref.edit().putString("0").commit();
OnSharedPreferenceChangeListener 被调用,但如果我使用这个:
pref.edit().putInt(0).commit();
它没有被调用!
我想问题是SharedPreferences是为设置而设计的,Android中没有整数类型的SharedPreference,我们不能为EditTextPreference指定整数值。因此,出于这个原因或其他原因,不会为 int 类型的 Preferences 调用 OnSharedPreferenceChangeListener。当心!
嗯,现在我想我应该使用带有消息的处理程序......
【问题讨论】: