没有得到共享偏好的更新值在服务(Not getting the updated value of t

2019-06-27 09:36发布

我从从一个小部件发起的活动存储一些值到一个共享的偏好。 如果我检索值从服务来自同一小部件​​开始,它不是一个更新。 我得到以前的值在共享的偏好了。 即使我检查共享偏好的XML值,我看到更新的一个人也没有。 为什么发生这种情况。 我知道,小部件和活动是两个过程,是什么原因呢?

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

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

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

Answer 1:

这些值是每个进程的高速缓存。

如果您在Android> 2.3运行必须指定MODE_MULTI_PROCESS当你调用getSharedPreferences () 如果您正在运行在Android上<2.3,那么它应该只是正常工作。 如果您是在Android 2.3上运行,则有在共享偏好东西的错误,它不跨多个进程正常工作,无论你做什么。



Answer 2:

使用commit()更新值之后,调用此有你在编辑器中进行任何更改

prefsEditor.commit();

改变你的代码,而不是这个

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

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


Answer 3:

在清单文件尝试删除

android:process=":my_process"

从服务。 希望它会工作。



文章来源: Not getting the updated value of the shared preference in the service