服务中的SharedPreference不会更新

时间:2014-11-26 03:47:57

标签: android sharedpreferences

我在服务中使用SharedPreference,并且在我第一次运行应用时它可以正常工作。如果我更改了另一个活动中的值,那么我发现服务中的值没有改变(活动中的值是正确的)。如果我重新启动应用程序,则它具有正确的值。这就是说,我的服务中的SharedPreference只能在重新启动应用之前正常工作一次。

我无法弄清楚问题,代码是这样的:

在服务中

SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(ctx);
Logger.d(this, "" + sp.getInt(SPConst.KEY_AVOID_DISTURB, 0));

活动

SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(mContext);
SharedPreferences.Editor editor editor = sp.edit();
editor.putInt(SPConst.KEY_AVOID_DISTURB, 1);
editor.commit();

如果set和get都是在服务或活动中完成的,那么它是正常的,如果在活动中设置,并且在服务中,那就错了。

2 个答案:

答案 0 :(得分:1)

最后,我找到了答案,也许后台服务和活动不在同一个过程中,所以将模式设置为MODE_MULTI_PROCESS

SharedPreferences sp = SnsService.this.getSharedPreferences("data", Context.MODE_MULTI_PROCESS);

答案 1 :(得分:0)

如果要更新服务类中的数据,只需将代码放在onStartCommand()方法中即可。并再次致电启动服务。传递指定服务的Intent,并包含要使用的服务的任何数据。该服务在onStartCommand()方法中接收此Intent。