我将一些值存储到从窗口小部件启动的活动的共享首选项中。如果我从同一小部件启动的服务中检索该值,则它不是更新的。我在共享偏好中获得了之前的值。即使我在共享首选项xml中检查该值,我在那里看到更新的那个。 为什么会这样。我知道小部件和活动是两个过程,原因是什么?
SharedPreferences preferences = getSharedPreferences("preferences_target_value", Context.MODE_PRIVATE);
String targetValue = preferences.getString("preferences_target_value", "0");
System.out.println("targetValue "+targetValue);`
答案 0 :(得分:5)
每个进程都会缓存这些值。
如果您在Android>上运行2.3当您致电MODE_MULTI_PROCESS
时,您必须指定getSharedPreferences ()
。如果您在Android<上运行2.3那么它应该正常工作。如果您在Android 2.3上运行,那么共享首选项中存在一个错误,无论您做什么,它都无法在多个进程中正常运行。
答案 1 :(得分:1)
在更新值后使用commit()
,将其调用以在编辑器中执行任何更改
prefsEditor.commit();
更改您的代码而非此
SharedPreferences preferences = getSharedPreferences("preferences_target_value", Context.MODE_PRIVATE);
到这个
SharedPreferences preferences = getSharedPreferences("preferance name", Context.MODE_PRIVATE);
答案 2 :(得分:1)
在清单文件中尝试删除
android:process=":my_process"
来自服务。希望它能工作。