Отмена тревоги из другого класса, который инициировал его - PullRequest
1 голос
/ 28 сентября 2011

Я установил будильник из одного класса, используя этот код

Intent myIntent = new Intent(ClassOne.this, AlarmService.class);
pendingIntent = PendingIntent.getService(ClassOne.this, 0, myIntent, 0);

AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(currentDate.getTime());
long when = calendar.getTimeInMillis();
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, when, (7 * 24 * 60 * 60) * 1000, pendingIntent);

Теперь мне нужно отменить ожидающие тревоги из другого класса.Могу ли я просто использовать этот код?

Intent myIntent = new Intent(ClassTwo.this, AlarmService.class);
PendingIntent pendingIntent = PendingIntent.getService(ClassTwo.this, 0, myIntent, 0);
AlarmManager alarmManagerCancel = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManagerCancel.cancel(pendingIntent);

Или есть лучший / правильный способ отменить ожидающие тревоги?

1 Ответ

2 голосов
/ 28 сентября 2011

Пока PendingIntent эквивалентно тому, который вы использовали для регистрации будильника, не имеет значения, откуда вы звоните cancel(). Два PendingIntent s эквивалентны (equals() возвращает true), если базовые намерения и коды запросов эквивалентны.

...