【问题标题】:How to cancel multiple alarms with duplicate PendingIntent at once?如何一次取消具有重复 PendingIntent 的多个警报?
【发布时间】: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


    【解决方案1】:

    如果您有预定义的警报数量,您可以为每个警报设置唯一的requestCodegetBroadcast 的第二个参数)。但我不确定这是否适合你。如果您不指定requestCode,所有警报将被filterEquals视为相同,因此所有警报都将被取消。

    【讨论】:

    • 这就是我想做的,把所有的警报一起取消。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2017-06-22
    • 1970-01-01
    • 2011-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多