0

我已经实现了一个 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);
}

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

4

1 回答 1

0

给定您的代码,只要所有地方都使用相同的Intent(指向Alarm_Activity.class)并且使用相同的PendingIntentID(10000在您的示例中),您的代码将取消任何当前的PendingIntent.

这不会取消任何当前警报

要取消闹钟,请拨打cancel()AlarmManager特别是,如果您这样做,请摆脱PendingIntent.FLAG_CANCEL_CURRENT,因此您取消旧的PendingIntent不会以某种方式干扰您取消与该相关的旧警报PendingIntent

于 2013-06-17T12:24:40.540 回答