我不能在BroadcastReceiver和AppCompatActivity之间共享SharedPreferences

时间:2015-11-19 13:56:06

标签: android broadcastreceiver sharedpreferences

我在BroadcastReceiver上设置了首选项,但我无法在AppCompatActivity上阅读。 我确实阅读了一些帖子,但我无法做到这一点。 活动和广播接收者在同一个应用程序(相同的包名称) 在广播接收器上,我在onReceive方法上有这个代码:

SharedPreferences prefs = context.getApplicationContext().getSharedPreferences(PROPERTIES.SHARENAME,
                context.MODE_PRIVATE);
prefs.edit().putBoolean("runnig", true).commit();

在活动中我有:

 SharedPreferences prefs1  =getApplicationContext().getSharedPreferences(PROPERTIES.SHARENAME,
                        MODE_PRIVATE);

boolean corriendo= prefs1.getBoolean("running",false);

但是变量corriendo仍然是假的。

我在broadcastreceiver上尝试使用context.getShared ...,使用apply而不是commit,避免在活动中使用getApplicationContext()而我无法完成这项工作。
非常感谢!!

1 个答案:

答案 0 :(得分:1)

看起来你写了一个错字:

比较:

prefs.edit().putBoolean("runnig", true).commit();
boolean corriendo= prefs1.getBoolean("running",false);

现在只是相关的一点:

putBoolean("runnig", true)
getBoolean("running",false)

TLDR;您正在阅读和写入不同的密钥。