Android: перезапустите сервис - PullRequest
       11

Android: перезапустите сервис

1 голос
/ 15 сентября 2011

В моем приложении есть служба, которая каждые X минут выполняет одно и то же действие с базой данных, чем stopSelf (), и в метод onDestroy. Я переместил этот код для перезапуска службы после того же времени:

@Override
public void onDestroy() {
    super.onDestroy();
    Intent intent_service = new Intent(context,vampireService.class);
    PendingIntent pintent = PendingIntent.getService(context, 0, intent_service,0);
    AlarmManager alarm = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
    alarm.set(AlarmManager.ELAPSED_REALTIME,SystemClock.elapsedRealtime()+ 4500000, pintent);
}

Но я не понимаю, почему, если мой телефон переходит в спящий режим, служба не перезапускается! Похоже, что отсчет времени AlarmManager начинается, когда я снова включаю дисплей .... это возможно? Если да, как я могу решить эту проблему?

Спасибо

Ответы [ 2 ]

2 голосов
/ 15 сентября 2011

Из документации на ELAPSED_REALTIME ...

Этот сигнал тревоги не вызывает пробуждение устройства ;если он гаснет, когда устройство спит, он не будет доставлен до следующего пробуждения устройства.

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

0 голосов
/ 27 июля 2012

Вы можете (и должны) планировать свою службу для запуска каждый раз X, используя диспетчер тревог.У вас есть эта опция setRepeating.

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