未获取服务中共享首选项的更新值

时间:2012-08-27 05:37:02

标签: android android-widget android-activity android-service

我将一些值存储到从窗口小部件启动的活动的共享首选项中。如果我从同一小部件​​启动的服务中检索该值,则它不是更新的。我在共享偏好中获得了之前的值。即使我在共享首选项xml中检查该值,我在那里看到更新的那个。 为什么会这样。我知道小部件和活动是两个过程,原因是什么?

SharedPreferences preferences = getSharedPreferences("preferences_target_value", Context.MODE_PRIVATE);

String targetValue = preferences.getString("preferences_target_value", "0");

System.out.println("targetValue "+targetValue);`

3 个答案:

答案 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"

来自服务。希望它能工作。