您可以通过创建具有唯一 ID 的警报来区分警报,例如:
Intent intent = new Intent(this, AlarmReceiverActivity.class);
PendingIntent pi = PendingIntent.getActivity(this,UNIQUE_ID_GOES_HERE, intent, 0);
AlarmManager am = (AlarmManager)getSystemService(Activity.ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(),pi);
现在,当您想取消此警报时,您必须创建具有相同唯一 ID 的相同 PendingIntent。例如,以下只会取消您使用 PendingIntent id 1234 创建的警报。
Intent intent = new Intent(this, AlarmReceiverActivity.class);
PendingIntent pi = PendingIntent.getBroadcast(this, 1234, intent, 0);
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
am.cancel(pi);
这个想法很简单。跟踪 id,然后使用它们取消各自的警报。如果您创建多个具有相同 id 的警报,则最近的警报将取消上一个警报。
最后,您可以拥有多个具有唯一 PendingIntent 的警报,但不能具有相同的 PendingIntent。