使用定时器/闹钟更新启动服务

时间:2011-10-31 06:51:53

标签: android service broadcastreceiver alarmmanager boot

我有一个在启动时启动的更新服务。问题是我希望它进行检查,然后等待一段时间并重新启动。当我的服务与应用程序绑定时,我用闹钟做了这个,但现在它是独立的,我只使用广播接收器在启动时启动它。问题是,由于某种原因,我无法将闹钟与它集成。 我只有我的UpdateService类和我的broadcastreceiver类。到目前为止我在广播接收器中的代码是这样的,但我想把闹钟放在这里说安排服务每隔30秒启动一次。我真的需要这个。

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

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

欢迎任何建议。提前谢谢。

1 个答案:

答案 0 :(得分:1)

我找到了问题的答案:

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