Лучший момент / место для настройки AlarmManager

Мое приложение показывает контент для сайта, на котором также есть система уведомлений. Я хочу показать, есть ли новые уведомления, и я использую AlarmManager , который вызывает IntentService .

Мой вопрос: где мне запустить / зарегистрировать этот AlarmManager ? Я поместил его в onCreate () моего действия только для проверки концепции (и он работает нормально, большое спасибо :)), но если вы начнете это действие дважды, вы будут получать несколько сигналов тревоги.

Единственное возможное решение, которое я придумал, это следующее, но я не знаю, будет ли это наилучшей практикой.

  • Запустите менеджер в onCreate () если предпочтение «тревога запущена» ложна
  • Задайте в настройках некоторую переменную, чтобы она запускалась.

Теперь, если тревога прекращается по какой-либо причине, нет возможности перезапустить ее. Итак, вариация будет такой:

  • Всегда вызывайте отмену в onCreate ()
  • , а затем всегда устанавливайте будильник.

Это похоже на общий шаблон: желание периодически получать информацию с будильником и не устанавливать этот будильник на более чем один раз. Как мне это сделать? Когда, где и как зарегистрировать тревогу?

Также, продолжая комментарий @Zelimir: можете ли вы проверить, все ли уже установлен определенный будильник?

В идеале, будильник должен быть установлен независимо от того, запущено действие или нет, конечно, но это может быть другое.

Для полноты, это код, который я сейчас использую для запуска будильника:

AlarmManager alMan   = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent i             = new Intent(this, CommentService.class);
PendingIntent penInt = PendingIntent.getService(this, 0, i, 0);

alMan.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
                          SystemClock.elapsedRealtime(), 
                          AlarmManager.INTERVAL_FIFTEEN_MINUTES, 
                          penInt);

Для еще большей полноты, описание приложения / ситуации.
Приложение в основном показывает блоги (журналы, если хотите) с определенной страницы. В нем есть действия по добавлению записей, просмотру записей, добавлению комментариев и т. Д. На материнском сайте есть возможность получать уведомления (например, номер, который вы видите здесь, на SO, когда вы получаете сообщение). Я хочу показать, есть ли новые сообщения, и получать их каждые xx минут. На данный момент он будет отображаться на панели уведомлений, но позже он может содержать какой-то виджет.

Если вам нужна дополнительная информация: приложение называется Androblip и поддерживает сайт blipfoto.com

6
задан Nanne 16 March 2011 в 12:21
поделиться