首页 > 解决方案 > android setRepeatingAlarm 没有被取消

问题描述

我花了很长时间试图弄清楚为什么我的重复警报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。

任何帮助表示赞赏。提前致谢!

标签: androidalarmmanagerandroid-pendingintentrepeatingalarm

解决方案


推荐阅读