【发布时间】:2014-03-23 10:30:07
【问题描述】:
我希望 AlarmManager 在预定时间(每周)重复一项任务
我使用了以下代码:
for (Integer day : daysList) {
Calendar c = Calendar.getInstance();
c.set(Calendar.DAY_OF_WEEK, PersonalUtils.getDigitalWeek(day));
c.set(Calendar.HOUR_OF_DAY, task.getHour());
c.set(Calendar.MINUTE, task.getMinute());
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
intent.putExtra("id", task.getId());
PendingIntent operation = PendingIntent.getService(
getApplicationContext(), requestCode, intent, 0);
alarm.setRepeating(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(),
AlarmManager.INTERVAL_DAY * 7, operation);
}
但是它过早地触发了警报。
例如:假设现在是周三 18:30。我设置了一个任务,应该在下周星期二 17:30 触发,但警报会立即触发
谁能告诉我为什么?
【问题讨论】:
-
你可以在设置完所有内容后检查c.getTime(),我认为有一些错误计算。您可能需要先在日历上设置下周的 setTime(),然后再使用。
-
如果您设置的日期已过,警报将立即触发。
标签: android scheduled-tasks alarmmanager