Обновление сервиса при загрузке с таймером / будильником - PullRequest
1 голос
/ 31 октября 2011

У меня есть служба обновлений, которая запускается при загрузке. Дело в том, что я хочу сделать проверку, затем подождать некоторое время и перезапустить себя. Я сделал это с будильником, когда моя служба была привязана к приложению, но теперь она независима, и я использую только широковещательный приемник, чтобы запустить его при загрузке. Проблема в том, что теперь по какой-то причине я не могу интегрировать с ним свой будильник. У меня есть только мой класс UpdateService и мой класс broadcastreceiver. Мой код в широковещательном приемнике пока такой, но я хочу поставить здесь будильник, чтобы планировать запуск службы каждые 30 секунд. Мне это действительно нужно.

 @Override
public void onReceive(Context context, Intent intent) { 

    Intent startServiceIntent = new Intent(context, UpdateService.class); 
    context.startService(startServiceIntent); 
} 

Любые предложения приветствуются. Заранее спасибо.

1 Ответ

1 голос
/ 01 ноября 2011

Я нашел ответ на мою проблему:

private boolean service_started=false;
private PendingIntent mAlarmSender;

@Override
public void onReceive(Context context, Intent intent) { 
    if(!service_started){
        // Create an IntentSender that will launch our service, to be scheduled 
        // with the alarm manager.    
        mAlarmSender = PendingIntent.getService(context,  
                0, new Intent(context, UpdateService.class), 0);

        //We want the alarm to go off 30 secs from now.  
        long firstTime = SystemClock.elapsedRealtime();   
        // Schedule the alarm!       
        AlarmManager am = (AlarmManager)context.getSystemService(context.ALARM_SERVICE);   
        am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,   
                firstTime,30*1000, mAlarmSender);    

        service_started=true;
    }
}

В конце концов, моя проблема заключалась в том, что я не правильно понял контекст:

(AlarmManager)getSystemService(ALARM_SERVICE);

изменено на (AlarmManager) context.getSystemService (context.ALARM_SERVICE);

...