这是一篇要求确认(或反驳)我认为在 Android 中发生的警报的帖子。这个主题在博客和 StackOverflow 帖子中经常出现,但我还没有找到对这两点的明确解释(下)。
下面的代码旨在设置和报警,然后取消设置。这没用。
Intent intent = new Intent(context, AlarmReceiver.class);
intent.setAction(AlarmReceiver.ALERT_GUARD_CHECKIN);
PendingIntent sender = PendingIntent.getBroadcast(context, _id, intent,
PendingIntent.FLAG_ONE_SHOT);
AlarmManager am = (AlarmManager) context
.getSystemService(Context.ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, now.getTime().getTime(), sender);
Intent toCancel = new Intent(context, AlarmReceiver.class);
toCancel.setAction(AlarmReceiver.ALERT_GUARD_CHECKIN);
PendingIntent pendingToCancel = PendingIntent.getBroadcast(context,
_id, toCancel, PendingIntent.FLAG_CANCEL_CURRENT);
am.cancel(pendingToCancel);
如果不是将 PendingIntent.FLAG_ONE_SHOT 传递给 PendingIntent.getBroadast() 的第一次调用,而是传递零,它确实有效。我不相信这种行为被记录在案。
如果 PendingIntent.getBroadast() 的第二个参数(上图,_id)不相同,该代码也不起作用。我不相信这是记录在案的。在 Android 文档中,第二个参数记录为“发件人的私人请求代码(当前未使用)”。
问题是我是否正确地描述了这种行为,或者这些概括是否是表象。