我已经阅读了这篇有用的帖子:
SharedPreferences.onSharedPreferenceChangeListener 没有被一致地调用
但是我没有运气。我正在尝试创建一个在服务中运行的 OnSharedPreferenceChangeListener。一切都正确实施,但并不总是触发侦听器。
public MyServiceOne extends Service {
public SharedPreferences mSharedPreferences;
// Listener defined by anonymous inner class.
public OnSharedPreferenceChangeListener mListener = new OnSharedPreferenceChangeListener() {
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
Log.d("debug", "A preference has been changed");
}
};
@Override
public void onCreate() {
mSharedPreferences = getSharedPreferences(MySharedPreferences.NAME, Context.MODE_PRIVATE);
mSharedPreferences.registerOnSharedPreferenceChangeListener(mListener);
}
@Override
public void onDestroy() {
super.onDestroy();
mSharedPreferences.unregisterOnSharedPreferenceChangeListener(mListener);
}
}
更新
问题源于一个我没有提到的事实。我正在运行两项服务,当在 MyService2 中进行共享首选项更改时,不会触发任何内容。在清单中,我定义了要在不同进程中运行的服务。有没有办法使这项工作?