Während fast jeder hier die richtige Antwort gegeben hat, hat niemand erklärt, auf welcher Grundlage die Alarme funktionieren
Sie können tatsächlich mehr darüber erfahren , AlarmManager
und seine Arbeit hier . Aber hier ist die schnelle Antwort
Sie sehen im AlarmManager
Grunde Zeitpläne a PendingIntent
irgendwann in der Zukunft. Um den geplanten Alarm abzubrechen, müssen Sie den Alarm abbrechen PendingIntent
.
Beachten Sie beim Erstellen des immer zwei Dinge PendingIntent
PendingIntent.getBroadcast(context,REQUEST_CODE,intent, PendingIntent.FLAG_UPDATE_CURRENT);
- Anforderungscode - Dient als eindeutige Kennung
- Flag - Definiert das Verhalten von
PendingIntent
Um zu überprüfen, ob der Alarm bereits geplant ist, oder um den Alarm abzubrechen, müssen Sie nur noch auf denselben zugreifen PendingIntent
. Dies kann erfolgen, wenn Sie denselben Anforderungscode verwenden und FLAG_NO_CREATE
wie unten gezeigt verwenden
PendingIntent pendingIntent=PendingIntent.getBroadcast(this,REQUEST_CODE,intent,PendingIntent.FLAG_NO_CREATE);
if (pendingIntent!=null)
alarmManager.cancel(pendingIntent);
Mit FLAG_NO_CREATE
wird zurückgegeben, null
wenn das PendingIntent
noch nicht existiert. Wenn es bereits vorhanden ist, wird ein Verweis auf das vorhandene zurückgegebenPendingIntent