android - 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。
任何帮助表示赞赏。提前致谢!
解决方案
推荐阅读
- oauth-2.0 - 存储在数据库中的 Json Web 令牌和验证
- angular - 使用 Msal 对 Angular 中的 Azure 广告进行身份验证
- python - 无缓冲的python覆盖率
- javascript - 如何在javascript中更改音频文件编解码器
- c - 一个动画处理图标,纯C
- python - 使用 Kmeans 聚类压缩多个图像
- django - 我使用 distinct() 对吗?
- object - Python vs VBS COM 对象处理
- python - 在不同的数据框中搜索匹配,然后将列重命名为匹配
- oracle - Oracle 数据库的 TO_TIMESTAMP 函数