Fofole
Fofole

Reputation: 3548

Update service on boot with timer/alarmclock

I have an update service that starts at boot. The thing is I want it to make a check and then wait for a period of time and restart itself. I did this with alarm clock when my service was tied to an application but now it is independent and I only use a broadcast receiver to start it at boot. The problem is that now for some reason I can't integrate my alarm clock with it. I only have my UpdateService class and my broadcastreceiver class.My code so far in the broadcastreceiver is this, but I want to put the alarm clock here to say schedule the service to start every 30 seconds. I really need this.

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

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

Any suggestions are welcome. Thanks in advance.

Upvotes: 1

Views: 464

Answers (1)

Fofole
Fofole

Reputation: 3548

I found the answer to my problem:

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;
    }
}

Eventually,my problem was that I didn't get the context right as follows:

(AlarmManager)getSystemService(ALARM_SERVICE);

changed to (AlarmManager)context.getSystemService(context.ALARM_SERVICE);

Upvotes: 1

Related Questions