我花了很长时间试图弄明白为什么我的闹钟会重复 setRepeating()
不会被取消,但使用 setExact
被取消。
这就是我设置闹钟的方式。
Intent intent = new Intent(context.getApplicationContext(), NotificationAlarmReceiver.class);
intent.setAction(Integer.toString(actionCode));
PendingIntent pendingIntent = PendingIntent.getBroadcast(context.getApplicationContext(), actionCode, intent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager) context.getApplicationContext().getSystemService(Context.ALARM_SERVICE);
long time = System.currentTimeMillis() + delaySeconds* 1000L;
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, time, repeatIntervalSeconds, pendingIntent);
这就是我试图取消的方式:
protected void cancelScheduledReminderAlarms(Context context, int actionCode, String notificationType) {
Logger.d("cancelScheduledAlarms PendingIntent ACTION = " + actionCode + " Notification type = "+ notificationType);
Intent intent = new Intent(context.getApplicationContext(), NotificationAlarmReceiver.class);
intent.setAction(Integer.toString(actionCode));
PendingIntent pendingIntent = PendingIntent.getBroadcast(context.getApplicationContext(), actionCode, intent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarms = (AlarmManager) context.getApplicationContext().getSystemService(Context.ALARM_SERVICE);
alarms.cancel(pendingIntent);
pendingIntent.cancel();
}
我已经验证了两种方法中的actioncode都是700102。
感谢您的帮助。提前谢谢!
暂无答案!
目前还没有任何答案,快来回答吧!