Отключение будильника после закрытия приложения Android

У меня есть ситуация в моем приложении. Я звоню в службу с помощью будильника. Будильник просыпается каждые 5 минут и звонит в сервис.

Но может случиться так, что пользователь закроет мое приложение, и я позволю функциональности службы работать, даже если пользователь не использует мое приложение.

Чтобы остановить службу, есть два способа: либо пользователь возвращается в приложение и нажимает кнопку, которая отменяет сигнал тревоги, ИЛИ второй способ: скажем, через x раз я хочу остановить службу, т.е. отменить сигнал тревоги с широковещательного приемника.

Теперь, как я могу сделать второй способ? Когда я попытался получить ссылку на AlarmManager, он выдал мне ошибку Null Pointer. (Я получаю доступ к этому диспетчеру тревог с широковещательного приемника)

Может ли кто-нибудь дать мне предложение о том, как отменить повторяющиеся сигналы тревоги вне контекста активности?

Спасибо :)


person ik024    schedule 21.10.2014    source источник
comment
Покажите мне код и свой логарифм....   -  person M D    schedule 21.10.2014
comment
Если вы собираетесь использовать время, чтобы определить, когда остановить планирование будильника, вам нужно сохранить время в каком-то месте, которое будет сохраняться, даже когда ваше приложение не запущено, например SharedPreferences. Вы можете просто сохранить время, когда пользователь запускал будильники, и проверять при каждом пробуждении, прошло ли достаточно времени, чтобы вы могли их отменить.   -  person Karakuri    schedule 21.10.2014


Ответы (2)


Вы можете остановить свой сервис следующим образом context.stopService(new Intent(context, YourService.class))

Также для того, чтобы отменить будильник, вы можете сделать это

 Intent intent = new Intent(this, YourClass.class);
 PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 1253, intent, PendingIntent.FLAG_UPDATE_CURRENT| Intent.FILL_IN_DATA);
 AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
 alarmManager.cancel(pendingIntent);

Я надеюсь, что это может помочь вам

person Aurelian Cotuna    schedule 21.10.2014

В вашем BroadcastReceiver попробуйте следующее:

      public void onReceive(Context context, Intent intent) {
          context.stopService(new Intent(context, YourService.class));
      }
person Dmitriy Puchkov    schedule 21.10.2014