【发布时间】:2015-08-26 12:44:38
【问题描述】:
我正在尝试使用 AlarmManager 在我设置的闹钟时间执行一些任务。 我知道我必须使用相同的 PendingIntent 来制作和取消警报。 但是,问题是我在“ClassA”类中发出警报,然后在“ClassB”类中取消警报。
这就是为什么我想知道在每个类中广播的意图是否相同,因为它们使用“不同的上下文”,因为它们在不同的类中,我猜。
它们可以被视为相同的 PendingIntent 并且我可以取消警报吗? 如果不是,我怎样才能使它们相同?
用于在“ClassA”类(扩展广播接收器)中发出警报:
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);
【问题讨论】:
-
PendingIntent 实现 Parcelable,因此您可以在活动之间传递它。你试过吗?
-
@Abdullah 我不能通过它,因为这两个类不相关并且它们与时间无关。这就是我尝试使用相同的请求代码声明新 Intent 和 PendingIntent 的原因。
标签: android alarmmanager android-pendingintent