我正在尝试使用AlarmManager在我设置的闹钟时间执行某些任务。 我知道我必须使用相同的PendingIntent来制作和取消闹钟。 但是,问题是我在班级“ClassA”中发出警报并在稍后取消类“ClassB”中的警报。
这就是为什么我想知道在每个班级中广播的意图是否相同,因为他们使用“不同的语境”,因为他们在不同的班级,我想。
它们可以被视为相同的PendingIntent吗?我可以取消闹钟吗? 如果没有,我怎么能让他们一样?
用于在“ClassA”类(扩展BroadcastReceiver)中发出警报:
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);
用于取消“ClassB”类(扩展BaseAdapter)中的警报:
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);
答案 0 :(得分:2)
您可以通过提供相同的操作,相同的Intent操作,数据,类别和组件以及相同的标志来检索相同类型的PendingIntent。 是的,如果警报仍然有效,您可以从另一个班级取消警报。只需确保传递使用的相同参数,请求用于创建待定意图的代码。