Что происходит, когда я запускаю будильник дважды? - PullRequest
12 голосов
/ 18 апреля 2011

Я прыгаю через обручи (ну, это не так уж и сложно), чтобы избежать двойного срабатывания будильника.Основной код выглядит следующим образом:

AlarmManager mgr=(AlarmManager)getSystemService(Context.ALARM_SERVICE);
Intent i=new Intent(this, MyService.class);
PendingIntent pi=PendingIntent.getService(this, 0, i, 0);
mgr.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime(), AlarmManager.INTERVAL_FIFTEEN_MINUTES, pi);

Будет ли иметь значение, буду ли я запускать этот код при каждом запуске моего приложения?Я не вижу каких-либо побочных эффектов, когда называю это примерно 10 раз экспериментом с избыточным убийством, но я не могу найти никаких ссылок на то, является ли это совпадением или ожидаемым поведением.

Если это не особенно ожидается, он чувствует себя «неправильно».Это может привести к неприятностям позже, если поведение AlarmManager изменится.

1 Ответ

13 голосов
/ 18 апреля 2011

Так как метод отмены для AlarmManager хорош с «похожим» намерением отменить тревогу, мы можем сказать, что платформа распознает намерение по имени класса. Следовательно, повторный вызов не должен быть проблемой, поскольку платформа будет знать, что для такого ожидающего намерения тревога уже существует.

Вот сообщение , в котором говорится нечто подобное.

...