我正在使用Service触发此警报管理器。因此,我想在30分钟后停止警报管理器,因为它会在10分钟后重复出现。在我的情况下,取消不起作用 请帮忙。
AlarmManager alarmMgr0 = (AlarmManager)
getSystemService(Context.ALARM_SERVICE);
Intent intent0 = new Intent(getApplicationContext(),
schedule.class);
PendingIntent pendingIntent0 =
PendingIntent.getBroadcast(getApplicationContext(), 0, intent0, 0);
Log.e(TAG, "SiteIN called");
// Intent intent0 = new Intent(this, OldEntryRemover.class);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, 23);
calendar.set(Calendar.MINUTE,26);
calendar.set(Calendar.SECOND, 0);
if(Calendar.getInstance().after(calendar)){
// Move to tomorrow
calendar.add(Calendar.DATE, 1);
}
//set that timer as a RTC Wakeup to alarm manager object
// alarmMgr0.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent0);
alarmMgr0.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
10000 * 60, pendingIntent0);
try {
thread.sleep(30000 * 60);
} catch (InterruptedException e) {
e.printStackTrace();
}
alarmMgr0.cancel(pendingIntent0);
答案 0 :(得分:0)
我将查看API,看看这是否真的是您想要的。
安排重复警报。 注意:用于计时操作(刻度, 超时等),使用Handler 会更轻松,更高效。如果 已经为同一IntentSender安排了警报,它将 首先被取消。
类似于set(int,long,PendingIntent),除了您还可以提供 警报将自动重复的时间段。 此闹钟 继续重复直到用 cancel(AlarmManager.OnAlarmListener)。如果指定的触发时间在 过去,警报将立即触发,并带有警报计数 取决于过去的触发时间与 重复间隔。
如果警报延迟(例如由于系统睡眠而导致的非_WAKEUP) 警报类型),将尽快发送跳过的重复内容。 之后,以后的警报将按照原始警报发送 时间表;他们不会随着时间的流逝而漂移。例如,如果您设置了一个 每小时都会重复发出警报,但电话已入睡 从7:45到8:45,手机会尽快发送警报 唤醒,则下一个警报将在9:00发送。
如果您的应用程序希望允许传递时间漂移 为了保证至少一定的时间间隔总是 两次警报之间经过,那么采取的方法是一次性使用 警报,在处理每个警报时自己安排下一个警报 交付。