Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 未获取服务中共享首选项的更新值_Android_Android Widget_Android Activity_Android Service - Fatal编程技术网

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

Android 未获取服务中共享首选项的更新值,android,android-widget,android-activity,android-service,Android,Android Widget,Android Activity,Android Service,我正在将从小部件启动的活动中获得的一些值存储到共享首选项中。如果我从从同一小部件启动的服务中检索到该值,则它不是更新的值。我正在获取共享首选项中的上一个值。即使我在共享首选项xml中检查该值,我也会在那里看到更新的值。 为什么会发生这种情况。我知道widget和activity是两个过程,这是原因吗?​ SharedPreferences preferences = getSharedPreferences("preferences_target_value", Context.MODE_P

我正在将从小部件启动的活动中获得的一些值存储到共享首选项中。如果我从从同一小部件启动的服务中检索到该值,则它不是更新的值。我正在获取共享首选项中的上一个值。即使我在共享首选项xml中检查该值,我也会在那里看到更新的值。 为什么会发生这种情况。我知道widget和activity是两个过程,这是原因吗?​

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

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

System.out.println("targetValue "+targetValue);`
使用
commit()
更新值后,调用此函数以在编辑器中执行任何更改

prefsEditor.commit();
更改您的代码而不是此代码

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

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

每个进程都会缓存这些值


如果您在Android>2.3上运行,则在调用
getSharedReferences()
时必须指定
MODE\u MULTI\u PROCESS
。如果您运行的是Android<2.3,那么它应该可以正常工作。如果您运行的是Android 2.3,那么共享首选项内容中有一个bug,无论您做什么,它都无法在多个进程中正常工作。

在清单文件中尝试删除

android:process=":my_process"

从服务。希望它能起作用。

您是如何从服务中检索到它的?发布相关代码?编辑问题。请仔细看看在活动中设置值时是否使用了相同的名称
首选项\u目标\u值
模式
?我正在提交。如果我重新安装小部件,我会在服务中更新值。在共享首选项xml中,我可以指定新值。我的首选项名称和值相同。检索也不成问题,因为我使用相同的代码在活动中获得正确的值。当访问共享首选项时,调用
getSharedReferences(字符串名称,int模式)。只需指定
MODE\u MULTI\u PROCESS
作为第二个参数。MODE\u MULTI\u PROCESS不起作用,现在已弃用