在特定时间定期停止触发AlarmManager

时间:2015-12-11 13:45:23

标签: android broadcastreceiver alarmmanager android-pendingintent android-calendar

我在我的应用程序中使用AlarmManager。第一步是支持一个警报,该警报每天从x时钟开始,并以n分钟的间隔发射。这是它的工作原理:

Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, fromHours);
calendar.set(Calendar.MINUTE, fromMinutes);

long fromTime = calendar.getTimeInMillis();

Intent intent = new Intent(context, MyAlarmReceiver.class);
intent.putExtra(ID, id);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, id, intent, 0);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, fromTime, 1000 * 60 * intervalMinutes, pendingIntent);

但是现在在第二步中我希望支持设置警报停止时的每日结束时间。所以我需要实现类似的东西:

alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, fromTime, toTime, 1000 * 60 * intervalMinutes, pendingIntent);

我该怎么做?当System.currentMillis() > toTime无法正常工作时取消定时器,因为这将永久取消定时器。但是第二天它又要开火了。

0 个答案:

没有答案