2015-01-25 3 views
3

Я разработал приложение, чтобы запланировать несколько локальных уведомлений, чтобы напомнить пользователям что-то сделать. Каждый месяц в текущем году должно быть сделано уведомление.Android переназначает тревогу будильника, когда приложение убито

Эти локальные уведомления назначаются с помощью «AlarmManager». Уведомление создается и создается в OnRetrieve для «BroadcastReceiver».

Все работает нормально, пока приложение не будет завершено (пользователем) или устройство перезагрузится.

После некоторого исследования я нашел решение перенести сигналы тревоги/локальные уведомления, если устройство перезагружено => используя BroadcastReceiver с «ActionBootCompleted» в качестве фильтра намерений, а затем перенести уведомления в «OnReceive».

К сожалению, я не могу найти достойное решение, чтобы перенести сигналы тревоги/локальные уведомления, если приложение завершено.

Каков наилучший подход для этого случая?

ответ

5

Попробуйте запустить это как фоновое обслуживание. Когда пользователь открывает приложение в первый раз, вызовите службу OnCreate(). Убедитесь, что служба START_STICKY, поэтому ее нельзя остановить, если вы явно не указали ее. Затем поместите свои AlarmManager внутри службы.

+0

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

+0

Да, служба перезагружается, и если вы хотите потреблять ресурсы, вы можете использовать таймер, который будет проверять дату после определенного количества времени (каждый час, каждый день и т. Д.) – Ethan

+0

@ Ethan, желательно, чтобы быть постоянно работающим сервисом? Я могу себе представить, что это немного перебор, чтобы запланировать некоторые локальные push-уведомления. Он постоянно потребляет +/- 30 мб RAM – StackFlower

Смежные вопросы