Тревога Android отменяется после закрытия приложения

У меня проблема с AlarmManager, я установил код для планирования повторяющегося будильника, и после запуска приложения будильник работает нормально. Даже если я нажимаю кнопку «Домой» (и приложение приостанавливается), будильник все равно срабатывает с определенным интервалом.

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

Это нормальное поведение, есть ли способ избежать этого и сохранить аварийный сигнал после закрытия приложения?

Код ниже - метод вызывается классом ApplicationContext, onCreate ().

 private void scheduleAlarm() {
  if (alarmScheduled == true) { return; } // we only need to schedule once.

  int alarmInterval = Def.pref(getApplicationContext()).getInt("alarmInterval", 30);

  final Intent intent = new Intent(getApplicationContext(), CollectorAlarmReceiver.class);
  final PendingIntent pending = PendingIntent.getBroadcast(getApplicationContext(), 0, intent, 0);

  AlarmManager alarmMgr = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE);

  alarmMgr.cancel(pending); // cancel others.

  alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()+1000,
    alarmInterval*1000, pending);

  Def.log(TAG,"scheduleAlarm(): alarm scheduled, interval: "+alarmInterval+" seconds");
  alarmScheduled = true;
 }

Код получателя:

public void onReceive(Context context, Intent intent) {
    Log.i(TAG, "CollectorAlarmReceiver invoked, starting CollectorService in background");

    context.startService(new Intent(context, CollectorService.class));

    Intent collectorService = new Intent(context,CollectorService.class);
    collectorService.putExtra("action", CollectorService.ACTION_BACKGROUND_REQUEST_MESSAGES);

    context.sendBroadcast(collectorService);
}

Спасибо!

24
задан Allan Denot 10 January 2011 в 06:52
поделиться