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);
希望对大家有所帮助
我正在将一个 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);
希望对大家有所帮助