我的应用程序在应用程序启动时调用服务。
在应用程序中,我正在更新给定键值对的值
SharedPreferences.Editor editor = getSharedPreferences(getString(R.string.shared_preferences_name), MODE_PRIVATE).edit();
editor.putString("key",value);
editor.apply();
我正在尝试从服务中获取它
SharedPreferences preferences = getSharedPreferences(getString(R.string.shared_preferences_name), MODE_PRIVATE);
String key = preferences.getString("key",null);
但服务始终显示旧的密钥值。即,该值仅在应用程序启动或服务重新启动后反映。
如何在不重新启动服务或应用程序的情况下获取服务中更新的值?
如上所述here https://developer.android.com/reference/android/content/SharedPreferences.html#registerOnSharedPreferenceChangeListener(android.content.SharedPreferences.OnSharedPreferenceChangeListener)共享首选项不能跨多个进程工作。还有其他选择吗?
你需要OnSharedPeferencesChangeListener
监听偏好的更新。
它显示旧值的原因是因为它没有更新(代码行没有被调用)。您需要触发事件来更新它。
SharedPreferences prefs =
PreferenceManager.getDefaultSharedPreferences(this);
prefs.registerOnSharedPreferenceChangeListener(
new SharedPreferences.OnSharedPreferenceChangeListener() {
public void onSharedPreferenceChanged(
SharedPreferences prefs, String key) {
String key = prefs.getString("key",null);
}
});`
EDIT:您需要强有力的参考SharedPreferences.OnSharedPreferenceChangeListener
目的。例子here https://stackoverflow.com/questions/2542938/sharedpreferences-onsharedpreferencechangelistener-not-being-called-consistently
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)