android setrepeatingalarm未被取消

f45qwnt8  于 2021-09-29  发布在  Java
关注(0)|答案(0)|浏览(232)

我花了很长时间试图弄明白为什么我的闹钟会重复 setRepeating() 不会被取消,但使用 setExact 被取消。
这就是我设置闹钟的方式。

  1. Intent intent = new Intent(context.getApplicationContext(), NotificationAlarmReceiver.class);
  2. intent.setAction(Integer.toString(actionCode));
  3. PendingIntent pendingIntent = PendingIntent.getBroadcast(context.getApplicationContext(), actionCode, intent, PendingIntent.FLAG_UPDATE_CURRENT);
  4. AlarmManager alarmManager = (AlarmManager) context.getApplicationContext().getSystemService(Context.ALARM_SERVICE);
  5. long time = System.currentTimeMillis() + delaySeconds* 1000L;
  6. alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, time, repeatIntervalSeconds, pendingIntent);

这就是我试图取消的方式:

  1. protected void cancelScheduledReminderAlarms(Context context, int actionCode, String notificationType) {
  2. Logger.d("cancelScheduledAlarms PendingIntent ACTION = " + actionCode + " Notification type = "+ notificationType);
  3. Intent intent = new Intent(context.getApplicationContext(), NotificationAlarmReceiver.class);
  4. intent.setAction(Integer.toString(actionCode));
  5. PendingIntent pendingIntent = PendingIntent.getBroadcast(context.getApplicationContext(), actionCode, intent, PendingIntent.FLAG_UPDATE_CURRENT);
  6. AlarmManager alarms = (AlarmManager) context.getApplicationContext().getSystemService(Context.ALARM_SERVICE);
  7. alarms.cancel(pendingIntent);
  8. pendingIntent.cancel();
  9. }

我已经验证了两种方法中的actioncode都是700102。
感谢您的帮助。提前谢谢!

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题