registerOnSharedPreferenceChangeListener不适用于在不同进程中进行的更改

时间:2012-04-14 02:21:07

标签: android process sharedpreferences

我已在我的活动中注册registerOnSharedPreferenceChangeListener我的SharedPreferences。当我更改在不同流程中运行的服务中SharedPreferences保存的数据时,不会调用onSharedPreferenceChanged

我应该怎样做才能调用android onSharedPreferenceChanged

1 个答案:

答案 0 :(得分:18)

最有可能的是,它是由gc收集的垃圾。我以前遇到过这个问题。创建一个全局变量,保持对侦听器的硬引用。

  OnSharedPreferenceChangeListener listener = new SharedPreferences.OnSharedPreferenceChangeListener() {
      public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
        // Implementation
      }
    };

SharedPreferences.onSharedPreferenceChangeListener not being called consistently的答案解释得最好