取消基于 pendingIntent 的警报不起作用
Cancelling pendingIntent based Alarm does not work
我创建了一个每分钟都会触发重复警报的未决意图。闹钟工作正常,但当我取消闹钟时,它仍然会响起。我已经阅读了有关此的其他帖子,并确保一切都按照建议进行,主要是使用 FLAG_UPDATE_CURRENT
并在创建和取消时使用相同的代码来实现目的。这是我使用的代码:
创建闹钟:
final AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
final Calendar c = Calendar.getInstance();
c.setTimeInMillis(System.currentTimeMillis());
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
c.add(Calendar.MINUTE, 1);
alarmManager.setRepeating(AlarmManager.RTC, c.getTimeInMillis(), 1000 * 60, getIntent(context));
取消闹钟:
final AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
getIntent(context).cancel();
alarmManager.cancel(getIntent(context));
getIntent 函数:
public static PendingIntent getIntent(Context context) {
return PendingIntent.getBroadcast(context, 20, new Intent(ACTION_MINUTE_ALARM), PendingIntent.FLAG_UPDATE_CURRENT);
}
有人知道问题出在哪里吗?
经过一番努力后,我发现还有另一个服务 运行(不同的 apk)也在使用重复警报创建完全相同的 pendingIntent。删除该服务解决了问题。因此,原始问题中描述的方法有效。希望这对某人有所帮助。
我创建了一个每分钟都会触发重复警报的未决意图。闹钟工作正常,但当我取消闹钟时,它仍然会响起。我已经阅读了有关此的其他帖子,并确保一切都按照建议进行,主要是使用 FLAG_UPDATE_CURRENT
并在创建和取消时使用相同的代码来实现目的。这是我使用的代码:
创建闹钟:
final AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
final Calendar c = Calendar.getInstance();
c.setTimeInMillis(System.currentTimeMillis());
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
c.add(Calendar.MINUTE, 1);
alarmManager.setRepeating(AlarmManager.RTC, c.getTimeInMillis(), 1000 * 60, getIntent(context));
取消闹钟:
final AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
getIntent(context).cancel();
alarmManager.cancel(getIntent(context));
getIntent 函数:
public static PendingIntent getIntent(Context context) {
return PendingIntent.getBroadcast(context, 20, new Intent(ACTION_MINUTE_ALARM), PendingIntent.FLAG_UPDATE_CURRENT);
}
有人知道问题出在哪里吗?
经过一番努力后,我发现还有另一个服务 运行(不同的 apk)也在使用重复警报创建完全相同的 pendingIntent。删除该服务解决了问题。因此,原始问题中描述的方法有效。希望这对某人有所帮助。