我需要我的服务在每晚 02:00 执行任务,如果任务失败,则安排自己在 30 分钟后重新开始,但如果成功,则停止自己并在另一晚的 02:00 重新开始。我设法让它在 02:00 开始,但在它被触发后它只是不断地触发它自己。
我的代码在Service
,这里是代码本身:
@Override
public void onStart(Intent intent, int startId) {
super.onStart(intent, startId);
//doTasks();
MediaPlayer player = MediaPlayer.create(this,
Settings.System.DEFAULT_NOTIFICATION_URI);
player.start();
AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
alarmManager.cancel(pendingIntent);
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 2);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),AlarmManager.INTERVAL_DAY, pendingIntent);
}
doTasks()
是我需要运行的任务,但因为它们很慢,我使用通知声音进行测试。而pendingIntentService
本身就是这个。
任何想法是什么让我AlarmManager
不断地触发?