【发布时间】:2012-07-08 15:23:52
【问题描述】:
我正在设置多个警报,它们将具有完全相同的PendingIntent 对象,但它们的响起时间不同。如果我通过向PendingIntent 提供相同的Intent 对象来取消一个警报,并将其传递给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);
所有的闹钟都会取消吗?这就是我想要它做的。我可以在每个PendingIntent 中使用不同的requestCode,但如果所有这些都被取消会更好,因为我不想维护和存储这些额外的requestCodes。
谢谢!
【问题讨论】:
标签: android duplicates alarmmanager android-pendingintent