Bundle.getExtras 出现故障

Bundle.getExtras malfunctioning

我正在将一个 Int 传递给 BroadcastReceiver,但我不确定我的操作是否正确,因为它有时有效,有时无效。

发送 Int:

    Intent intent = new Intent(getActivity(),Broadcast_RemoveClass.class);
    Bundle bundle = new Bundle();
    bundle.putDouble("mInt", i);
    intent.putExtras(bundle);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(getActivity().getApplicationContext(), 234324243, intent, 0);
    AlarmManager alarmManager = (AlarmManager) getActivity().getSystemService(Context.ALARM_SERVICE);
    alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 1000 * 5, pendingIntent);
    Toast.makeText(getActivity(), "countdown started for: " + i,Toast.LENGTH_LONG).show();

获取 Int:

public class Broadcast_RemoveClass extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Bundle bundle = intent.getExtras();
        int i = bundle.getInt("mInt");
        Toast.makeText(context, "done" + i , Toast.LENGTH_LONG).show();
    }
}

有时它会获取当前的 int,但后来它只是不断获取先前传递的 int。发送意图时,它会在 toast 中显示正确的 int,但随后会在 BroadcastReceiver 中显示错误的 int。关于是什么让这一切发生的任何想法?

我解决这个问题的方法不是通过包传递数据,而是将数据放在 SharedPrefs 键中,然后在 BroadcastReceiver 中获取该键

发送:

prefs = getActivity().getSharedPreferences("info", Context.MODE_PRIVATE);
prefs.edit().putInt("mInt", i).apply();

明白了:

    SharedPreferences prefs = context.getSharedPreferences("info", Context.MODE_PRIVATE);
    int i = prefs.getInt("i",0);

希望对大家有所帮助