Android 如何在不同类中使用PendingEvents取消AlarmManager?

Android 如何在不同类中使用PendingEvents取消AlarmManager?,android,alarmmanager,android-pendingintent,Android,Alarmmanager,Android Pendingintent,我正在尝试使用AlarmManager在我设置的报警时间内执行一些任务。 我知道我必须用同样的悬挂物来制作和取消闹钟。 但是,问题是我在“ClassA”课上发出警报,然后在“ClassB”课上取消警报 这就是为什么我想知道在每节课上广播的意图是否相同,因为它们使用“不同的上下文”,就像它们在不同的课上一样,我猜 它们可以被视为相同的悬挂式帐篷吗?我可以取消警报吗? 如果没有,我如何使它们相同 用于在类“ClassA”(扩展广播接收器)中发出警报: 用于取消类“ClassB”(扩展BaseAdap

我正在尝试使用AlarmManager在我设置的报警时间内执行一些任务。 我知道我必须用同样的悬挂物来制作和取消闹钟。 但是,问题是我在“ClassA”课上发出警报,然后在“ClassB”课上取消警报

这就是为什么我想知道在每节课上广播的意图是否相同,因为它们使用“不同的上下文”,就像它们在不同的课上一样,我猜

它们可以被视为相同的悬挂式帐篷吗?我可以取消警报吗? 如果没有,我如何使它们相同

用于在类“ClassA”(扩展广播接收器)中发出警报:

用于取消类“ClassB”(扩展BaseAdapter)中的报警:


通过提供相同的操作、相同的意图操作、数据、类别和组件以及相同的标志,可以检索相同类型的PendingEvent。
是的,如果警报仍然有效,您可以从其他类取消警报。只需确保传递的参数与创建挂起的意图所用的请求代码相同。

PendingEvent实现了Parcelable,因此您可以在活动之间传递它。你试过了吗?@Abdullah我不能通过,因为这两门课没有关系,而且它们与时间无关。这就是为什么我尝试使用相同的请求代码声明新的意图和挂起事件。您的问题是:它们是否可以被视为相同的挂起事件,我是否可以取消警报?如果没有,我如何使它们相同?是的,它们可以被视为相同的挂起内容,是的,如果挂起的意图仍然有效,您可以从另一个类取消报警。您的意思是,即使它们在意图中使用不同的上下文,它们也可以是“相同”的挂起内容?因为你说它必须是相同的意图,然而,它不是相同的意图,因为每个意图中的上下文是不同的,我想。我还有一个问题。如果我在创建报警时在intent中添加了额外的字符串,那么在取消报警时是否也必须在intent中添加额外的字符串(尽管这是不必要的),以使它们具有相同的挂起内容?否。为此,在比较
intent
s时,将忽略“额外内容”。要取消警报,您不需要任何“附加”。
alarmMgr = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context, myReceiver.class);
PendingIntent pender = PendingIntent.getBroadcast(context, codeNum, intent, 0);
alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
                    AlarmManager.INTERVAL_DAY, pender);
alarmMgr = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context, myReceiver.class);
PendingIntent pilocal = PendingIntent.getBroadcast(context, codeNum, intent, 0);
pilocal.cancel();
alarm.cancel(pilocal);