在我的onCreate void中,我使用它来检查首选项是否已更改:
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
SharedPreferences.OnSharedPreferenceChangeListener listener = new SharedPreferences.OnSharedPreferenceChangeListener() {
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
Log.d(TAG, "PREFERENCES CHANGED : " + key);
}
};
preferences.registerOnSharedPreferenceChangeListener(listener);
它在我的Nexus 6(5.1.1)上完美运行,但在我的Samsung平板电脑标签S2(5.0.2)上没有(从不显示日志信息)。
是否归功于Android版本?
答案 0 :(得分:1)
Is it due to the Android version ?
Documentation states that no. It has been present since API 1
public abstract void onSharedPreferenceChanged(SharedPreferences sharedPreferences,String key) 在API级别1中添加
更改,添加或删除共享首选项时调用。即使将首选项设置为其现有值,也可以调用此方法。
此回调将在您的主线程上运行。 参数 sharedPreferences收到更改的SharedPreferences。 key已更改,添加或删除的首选项的键。
但是,请注意:
注意:
首选项管理器当前不存储对侦听器的强引用。您必须存储对侦听器的强引用,否则它将容易被垃圾回收。我们建议您在对象的实例数据中保留对侦听器的引用,只要您需要侦听器即可。