我正在重新安排属性更改后的警报。我需要阅读各种变量。问题是,当我从OnPreferenceChangeListener
运行函数时,这个函数会看到旧的preference值。
我想做一些我从AWT/Swing开发中了解到的事情:将命令添加到事件队列中,这样它将在处理完UI事件后执行,也就是说在完成偏好更改操作后执行。问题是……我在安卓系统中没有发现类似EventQueue
的东西。我只找到了runOnUiThread
操作,这不是我所需要的,因为根据规范,如果我们已经在UI线程中,命令将立即执行。
那么,你能帮我吗,我需要用什么?也许我搜索错了关键词。。。。
在我的情况下,我使用了错误的OnPreferenceChangeListener
在首选项更改阶段使用,在单个首选项上注册,应该用于首选项值验证。
这就是我需要注册的侦听器,它将在首选项已经更改后被调用。这项任务是用OnSharedPreferenceChangeListener
完成的,它将在任何偏好更改后调用,并且应用程序已经可以看到更改:
PreferenceManager.getDefaultSharedPreferences(this)
.registerOnSharedPreferenceChangeListener(
new OnSharedPreferenceChangeListener() {
public void onSharedPreferenceChanged(
SharedPreferences sharedPreferences, String key) {
if (MYKEY1.equals(key)
|| MYKEY2.equals(key)) {
doSomething();
}
}
});