我从从一个小部件发起的活动存储一些值到一个共享的偏好。 如果我检索值从服务来自同一小部件开始,它不是一个更新。 我得到以前的值在共享的偏好了。 即使我检查共享偏好的XML值,我看到更新的一个人也没有。 为什么发生这种情况。 我知道,小部件和活动是两个过程,是什么原因呢?
SharedPreferences preferences = getSharedPreferences("preferences_target_value", Context.MODE_PRIVATE);
String targetValue = preferences.getString("preferences_target_value", "0");
System.out.println("targetValue "+targetValue);`
这些值是每个进程的高速缓存。
如果您在Android> 2.3运行必须指定MODE_MULTI_PROCESS
当你调用getSharedPreferences ()
如果您正在运行在Android上<2.3,那么它应该只是正常工作。 如果您是在Android 2.3上运行,则有在共享偏好东西的错误,它不跨多个进程正常工作,无论你做什么。
使用commit()
更新值之后,调用此有你在编辑器中进行任何更改
prefsEditor.commit();
改变你的代码,而不是这个
SharedPreferences preferences = getSharedPreferences("preferences_target_value", Context.MODE_PRIVATE);
这
SharedPreferences preferences = getSharedPreferences("preferance name", Context.MODE_PRIVATE);
在清单文件尝试删除
android:process=":my_process"
从服务。 希望它会工作。