Хоча майже всі тут давали правильну відповідь, жоден орган не пояснив, на якій основі працюють тривожні сигнали
Дізнатися більше про AlarmManagerїї роботу можна тут . Але ось швидка відповідь
Ви бачите в AlarmManagerосновному графіки PendingIntentна деякий час у майбутньому. Тож для скасування запланованої тривоги вам потрібно скасувати PendingIntent.
Завжди зберігайте на увазі дві речі під час створення PendingIntent
PendingIntent.getBroadcast(context,REQUEST_CODE,intent, PendingIntent.FLAG_UPDATE_CURRENT);
- Код запиту - діє як унікальний ідентифікатор
- Прапор - визначає поведінку
PendingIntent
Тепер, щоб перевірити, чи тривогу вже заплановано, або скасувати сигнал тривоги, вам просто потрібно отримати доступ до того ж PendingIntent. Це можна зробити, якщо ви використовуєте той же код запиту і використовуєте, FLAG_NO_CREATEяк показано нижче
PendingIntent pendingIntent=PendingIntent.getBroadcast(this,REQUEST_CODE,intent,PendingIntent.FLAG_NO_CREATE);
if (pendingIntent!=null)
alarmManager.cancel(pendingIntent);
З FLAG_NO_CREATEним повернеться, nullякщо цього PendingIntentще не існує. Якщо він вже існує, він повертає посилання на існуючеPendingIntent