Chociaż prawie wszyscy tutaj udzielili prawidłowej odpowiedzi, żadne ciało nie wyjaśniło, na jakiej podstawie działają Alarmy
Możesz dowiedzieć się więcej o tym AlarmManager
i jak działa tutaj . Ale oto szybka odpowiedź
Widzisz AlarmManager
zasadniczo harmonogramy PendingIntent
w przyszłości. Aby więc anulować zaplanowany alarm, musisz anulować PendingIntent
.
Zawsze miej na uwadze dwie rzeczy podczas tworzenia PendingIntent
PendingIntent.getBroadcast(context,REQUEST_CODE,intent, PendingIntent.FLAG_UPDATE_CURRENT);
- Kod żądania - Działa jako unikalny identyfikator
- Flaga - określa zachowanie
PendingIntent
Teraz, aby sprawdzić, czy alarm jest już zaplanowany lub anulować alarm, wystarczy uzyskać do niego dostęp PendingIntent
. Można to zrobić, jeśli używasz tego samego kodu żądania i używasz go FLAG_NO_CREATE
jak pokazano poniżej
PendingIntent pendingIntent=PendingIntent.getBroadcast(this,REQUEST_CODE,intent,PendingIntent.FLAG_NO_CREATE);
if (pendingIntent!=null)
alarmManager.cancel(pendingIntent);
Dzięki FLAG_NO_CREATE
nie wróci, null
jeśli jeszcze PendingIntent
nie istnieje. Jeśli już istnieje, zwraca odwołanie do istniejącegoPendingIntent