Android:重启服务

时间:2011-09-15 17:41:22

标签: android service alarmmanager

我的应用程序有一个服务,每隔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 个答案:

答案 0 :(得分:2)

来自ELAPSED_REALTIME ...

的文档
  

此闹钟不会唤醒设备;如果它在设备处于睡眠状态时熄灭,则在下次设备唤醒时才会发送。

尝试使用ELAPSED_REALTIME_WAKEUP查看是否有帮助(不确定它是否适用于服务)。

答案 1 :(得分:0)

您可以(并且应该)使用警报管理器安排您的服务每隔X次运行一次。你有这个setRepeating选项。