我已经实现了一个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工作?
答案 0 :(得分:0)
根据您的代码,只要所有地点都使用相同的Intent
(指向Alarm_Activity.class
)并且在您的示例中使用相同的PendingIntent
ID(10000
),您的代码将取消当前的PendingIntent
。
这不取消任何当前的闹钟。
要取消闹钟,请致电cancel()
上的AlarmManager
。特别是,如果您这样做,请删除PendingIntent.FLAG_CANCEL_CURRENT
,因此取消旧版PendingIntent
不会以某种方式干扰您取消与PendingIntent
绑定的旧警报。