<分区>
我已经在我的 Activity 中使用 SharedPreferences
注册了 registerOnSharedPreferenceChangeListener
。当我在不同进程中运行的服务中更改使用 SharedPreferences
保存的数据时,不会调用 onSharedPreferenceChanged
!
我应该怎么做才能让 android 调用 onSharedPreferenceChanged
?
<分区>
我已经在我的 Activity 中使用 SharedPreferences
注册了 registerOnSharedPreferenceChangeListener
。当我在不同进程中运行的服务中更改使用 SharedPreferences
保存的数据时,不会调用 onSharedPreferenceChanged
!
我应该怎么做才能让 android 调用 onSharedPreferenceChanged
?
最佳答案
很可能,它正在被 gc 垃圾回收。我以前遇到过这个问题。创建一个全局变量,它保持对监听器的硬引用。
OnSharedPreferenceChangeListener listener = new SharedPreferences.OnSharedPreferenceChangeListener() {
public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
// Implementation
}
};
答案在 SharedPreferences.onSharedPreferenceChangeListener not being called consistently解释得最好
关于android - registerOnSharedPreferenceChangeListener 不适用于在不同进程中所做的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10150480/
相关文章:
android - Firebase getInstance 总是抛出无虚拟方法异常
java - 为什么显示 "The method getPreferenceOnScreen is depriciated"?
Android Studio - Android Device Monitor 的文件资源管理器不工作
android - 为什么我们应该使用 aysntask 或 service 而不是新线程
java - SharedPreferences 没有更新其值
Android Jsoup 向 ASPX 页面发布请求总是出现 500 错误
java - 在 ArrayAdapter 中的 edittext 之外执行某些操作后,如何隐藏 android 中的软键盘?