我的应用程序有一个服务,每隔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的计数时间开始....这可能吗?如果是,我该如何解决这个问题?
由于
答案 0 :(得分:2)
来自ELAPSED_REALTIME ...
的文档此闹钟不会唤醒设备;如果它在设备处于睡眠状态时熄灭,则在下次设备唤醒时才会发送。
尝试使用ELAPSED_REALTIME_WAKEUP查看是否有帮助(不确定它是否适用于服务)。
答案 1 :(得分:0)
您可以(并且应该)使用警报管理器安排您的服务每隔X次运行一次。你有这个setRepeating选项。