PendingIntent贯穿多个实例

时间:2013-06-17 11:28:54

标签: android android-intent alarmmanager android-pendingintent multiple-instances

我已经实现了一个Alarm类,它应该设置一个新的待处理Intent并且总是覆盖旧的。 (我宁愿停止/删除所有旧的,但我不知道如何)

private void startAlarm(){
    Intent intent = new Intent(source, Alarm_Activity.class);
    // 10000 should be the ID of Intent
    PendingIntent pendingIntent = PendingIntent.getActivity(source, 10000, intent, PendingIntent.FLAG_CANCEL_CURRENT);

    AlarmManager am = (AlarmManager)source.getSystemService(Context.ALARM_SERVICE);
    am.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(),pendingIntent);
}

不幸的是,我多次从不同的活动创建这个课程。我认为这就是它没有取消最后一个意图(Flag_cancel_current)的原因。如何在此类的多个实例中使Flag工作?

1 个答案:

答案 0 :(得分:0)

根据您的代码,只要所有地点都使用相同的Intent(指向Alarm_Activity.class)并且在您的示例中使用相同的PendingIntent ID(10000 ),您的代码将取消当前的PendingIntent

取消任何当前的闹钟

要取消闹钟,请致电cancel()上的AlarmManager。特别是,如果您这样做,请删除PendingIntent.FLAG_CANCEL_CURRENT,因此取消旧版PendingIntent不会以某种方式干扰您取消与PendingIntent绑定的旧警报。