我目前正在开发一个本地的Android应用程序,我的代码可以使用AlarmManager类来安排一个通知出现在设备上:
Intent intent = new Intent(this, NotifyActivity.class);
AlarmManager alarmMgr = (AlarmManager)getSystemService(Activity.ALARM_SERVICE);
PendingIntent alarmIntent = PendingIntent.getService(this, 0, intent, 0);
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 9);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 24*60*60*1000, alarmIntent);有两件事:
有人能告诉我,为什么每次打开应用程序时都会发出通知,为什么通知不是,而是在设备到达9点时才触发?
谢谢
发布于 2016-04-06 08:01:53
来自AlarmManager的医生
如果规定的触发时间是过去的,则会立即触发警报。
你把闹钟设置为9:00,如果你在这个小时后启动,触发时间已经过去了,所以当应用程序打开时警报就会响了。
您可以检查当前时间是否是警报之后,如果是,您添加一天的警报,它将在第二天结束。例如:
Calendar cal = Calendar.getInstance();
Calendar cal_now = Calendar.getInstance();
cal.setTimeInMillis(System.currentTimeMillis());
cal.set(Calendar.HOUR_OF_DAY, 9);
cal.set(Calendar.MINUTE, 0);
if (cal.before(cal_now)) {//if its in the past
cal.add(Calendar.DATE, 1);
}
alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), 24*60*60*1000, alarmIntent);希望能帮上忙
https://stackoverflow.com/questions/33291153
复制相似问题