[英]Alarm Manager- SetRepeating - INTERVAL_DAY not firing at all
我正在尝试设置一个每天下午2点20分响的闹钟。 这是代码
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY,14);
calendar.set(Calendar.SECOND,20);
AlarmManager alarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
PendingIntent pendingIntent;
Intent intentService = new Intent(context, DownloadService.class);
//setting alarm to run at 2:20 pm
pendingIntent= PendingIntent.getService(context,0,intentService,PendingIntent.FLAG_UPDATE_CURRENT);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),AlarmManager.INTERVAL_DAY,pendingIntent);
当我使用5*60*1000
作为间隔的值时,它可以正常工作。 但是,当我使用AlarmManager.INTERVAL_DAY
,它不会关闭。 有人可以告诉我上面的代码是否正确吗? 谢谢。
我认为您只是在INTERVAL_DAY监督了说明:
在API 19之前的Android上运行时, setInexactRepeating (int,long,long,PendingIntent)可识别的可用不精确重复间隔。
在您的代码中,您使用setRepeating而不是setInexactRepeating AlarmManager.INTERVAL_DAY
这是intervalMillis参数的区别:
setRepeating
intervalMillis警报的后续重复之间的间隔(以毫秒为单位)。
setInexactRepeating
intervalMillis警报的后续重复之间的间隔(以毫秒为单位)。 在API 19之前,如果这是INTERVAL_FIFTEEN_MINUTES,INTERVAL_HALF_HOUR,INTERVAL_HOUR,INTERVAL_HALF_DAY或INTERVAL_DAY中的一种,则该警报将与其他警报保持相位一致,以减少唤醒次数。 否则,将像应用程序已调用setRepeating(int,long,long,PendingIntent)一样设置警报。 从API 19开始,所有重复警报将是不精确的,并且与其他警报一起分批处理,无论它们规定的重复间隔如何。
希望我有好运!
只需替换此行:
calendar.set(Calendar.SECOND,20);
用这一行:
calendar.set(Calendar.MINUTE,20);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.