我尝试安排某个日期的通知:
notification.defaults |= Notification.DEFAULT_SOUND;
notification.defaults |= Notification.DEFAULT_VIBRATE;
Intent notificationIntent = new Intent(context,
NotificationPublisher.class);
notificationIntent.putExtra(NotificationPublisher.NOTIFICATION_ID, 1);
notificationIntent.putExtra(NotificationPublisher.NOTIFICATION,
notification);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0,
notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
long delay = millisFromNow(date);
AlarmManager alarmManager = (AlarmManager) context
.getSystemService(Context.ALARM_SERVICE);
alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, delay,
pendingIntent);
但是在我安排通知后,通知会出现。 这是我计算未来日期的工厂:
private static SimpleDateFormat dateFormat = new SimpleDateFormat(
"dd/MM/yyyy HH:mm");
try {
Calendar calendar = Calendar.getInstance();
calendar.setTime(dateFormat.parse(date));
return calendar.getTimeInMillis();
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return -1;
}
出了什么问题?
答案 0 :(得分:0)
您正在使用此标志设置通知警报:
AlarmManager.ELAPSED_REALTIME_WAKEUP
正如文件所说:
报警时间为SystemClock.elapsedRealtime()
( 启动后 时间,包括睡眠状态),会在设备关闭时唤醒设备。
因此,此标志用于在启动时触发警报,我建议您更改为:
AlarmManager.RTC