Android BroadcastReceiver 中的 SharedPreferences 值未更新

Android SharedPreferences value not update in BroadcastReceiver

我创建了一个名为 ALARM 的 SharedPreferences,其中包含一个名为 ("alarm",boolean) 的映射,("alarm",boolean) 的布尔值在 MainActivity 中不时更改,并在 BroadcastReceiver 中接收.

问题是:当我不时更改MainActivity 中的值时,BroadcastReceiver 只更改一次。我的代码有什么问题?

在下面的代码中,start() 对齐到一个按钮,单击时,将 boolean 更改为 true。我也可以在 BroadcastReceiver 中看到一个真实的值。但是后来我点击了 stop(),在 MainActivity 中将布尔值更改为 false,但仍然看到在 BroadcastReceiver 中收到了一个真值。

如果我先点击 stop(),那么我总是在 BroadcastReceiver 中看到 false 值。(即使我多次点击 start())

谢谢。

主要活动:

public class MainActivity extends AppCompatActivity {
SharedPreferences ALARM;
SharedPreferences.Editor editorALARM;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    ALARM = getSharedPreferences("ALARM", MODE_PRIVATE);
    editorALARM = ALARM.edit();

}

// start data service
public void start(View view) {
    editorALARM.putBoolean("alarm", true).apply();
    Log.e("start",""+ALARM.getBoolean("alarm", false));

    Intent intent = new Intent();
    intent.setAction("xxx.ALARM");
    sendBroadcast(intent);

}

// stop data service
public void stop(View view) {
    editorALARM.putBoolean("alarm", false).apply();
    Log.e("stop",""+ALARM.getBoolean("alarm", true));

    Intent intent = new Intent();
    intent.setAction("xxx.ALARM");
    sendBroadcast(intent);

}

}

广播接收器:

public class Receiver extends BroadcastReceiver {
SharedPreferences ALARM;

@Override
public void onReceive(Context context, Intent intent) {
    ALARM = context.getSharedPreferences("ALARM", Activity.MODE_PRIVATE);

    Log.e("actual",""+ALARM.getBoolean("alarm", false));

}
}

替换-

editorALARM.putBoolean("alarm", true).apply();

与-

editorALARM.putBoolean("alarm", true).commit();

会为你工作

这是由于 android: process =":remote" in manifests.xml,删除后。我得到了正确的布尔值。