我正在设置多个警报,它们将具有完全相同的PendingIntent
对象,但它们的响起时间不同。如果我通过向 提供相同的Intent
对象来取消一个警报PendingIntent
,并将其传递给AlarmManager.cancel()
,它会取消所有警报(即具有不同的开始时间)还是会表现出其他一些行为?
这是代码:
while(size != 0)
{
timeToSet = getNewTime(); //gets calendar object
Intent intent = new Intent(this, MyAlarmReceiver.class);
intent.putExtra("uniqueid", uuid);
intent.putExtra("vibrate", myalarm.getVibrate());
intent.putExtra("important", myalarm.getImportant());
PendingIntent pendingIntent = PendingIntent.getBroadcast(this.getApplicationContext(),
0, intent, PendingIntent.FLAG_UPDATE_CURRENT | Intent.FILL_IN_DATA);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, timeToSet.getTimeInMillis(), 604800000, pendingIntent);
size--;
}
因此,所有警报的 Intent 对象都相同,但时间不同。现在,当我取消这些警报时:
Intent intent = new Intent(this, MyAlarmReceiver.class);
intent.putExtra("uniqueid", uuid);
intent.putExtra("vibrate", myalarm.getVibrate());
intent.putExtra("important", myalarm.getImportant());
PendingIntent pendingIntent = PendingIntent.getBroadcast(this.getApplicationContext(), 0, intent, PendingIntent.FLAG_UPDATE_CURRENT | Intent.FILL_IN_DATA);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.cancel(pendingIntent);
所有的闹钟都会取消吗?这就是我想要它做的。我可以requestCode
在每一个中使用不同的PendingIntent
,但如果所有这些都被取消会更好,因为我不想维护和存储这些额外的requestCodes
。
谢谢!