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 AlarmManageri jak działa tutaj . Ale oto szybka odpowiedź
Widzisz AlarmManagerzasadniczo harmonogramy PendingIntentw 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_CREATEjak 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_CREATEnie wróci, nulljeśli jeszcze PendingIntentnie istnieje. Jeśli już istnieje, zwraca odwołanie do istniejącegoPendingIntent