我想仅在8:00和16:00之间每15分钟显示一条通知。这是代码:
Calendar calendar = Calendar.getInstance();
Calendar calendarStartOfTheDay = Calendar.getInstance();
Calendar calendarEndOfTheDay = Calendar.getInstance();
calendarStartOfTheDay.set(Calendar.HOUR_OF_DAY, 8);
calendarStartOfTheDay.set(Calendar.MINUTE, 0);
calendarStartOfTheDay.set(Calendar.SECOND, 0);
calendarEndOfTheDay.set(Calendar.HOUR_OF_DAY, 16);
calendarEndOfTheDay.set(Calendar.MINUTE, 0);
calendarEndOfTheDay.set(Calendar.SECOND, 0);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(ALARM_SERVICE);
if (alarmManager != null && calendar.getTimeInMillis() > calendarStartOfTheDay.getTimeInMillis() && calendar.getTimeInMillis() < calendarEndOfTheDay.getTimeInMillis()) {
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis() + 15 * 60 * 1000, AlarmManager.INTERVAL_FIFTEEN_MINUTES, pendingIntent);
}
除了检查notificationManager.notify()
之前的当前时间之外,是否有解决方案
如果这是唯一的解决方案,那么它会不会在晚上消耗过多电池电量?
答案 0 :(得分:1)
这可以由作业调度程序在android中完成。由于警报管理器已过时, 不再使用。 Job Scheduler还为您提供了安排任务在特定条件下运行的灵活性, 例如:
设备正在充电
设备已连接到非计量网络
设备空闲
在一定期限之前开始
在预定义的时间范围内开始,例如在下一个小时内
在最小延迟后开始,例如等待至少10分钟
您可以点击此链接以实现
https://medium.com/google-developers/scheduling-jobs-like-a-pro-with-jobscheduler-286ef8510129