作业应在特定的时间/日期和时间执行,我的代码要安排:
date.set(Calendar.HOUR, hour);
date.add(Calendar.DATE, notificationOffset * -1);
int offset = (int) ((date.getTimeInMillis() - now.getTimeInMillis()) / 1000);
if (offset < 0) return;
FirebaseJobDispatcher dispatcher = new
FirebaseJobDispatcher(new GooglePlayDriver(ctx));
dispatcher.cancelAll();
dispatcher.mustSchedule(dispatcher.newJobBuilder()
.setService(MyService.class)
.setTag(tag)
.setLifetime(Lifetime.FOREVER)
.setExtras(bundle)
.setTrigger(Trigger.executionWindow(offset, offset + 1))
.build());
date
表示事件日期,应在之前的特定时间和几天(notificationOffset
)之前触发工作。
如果执行时间在不久的将来(如5分钟左右),它将起作用。但是,如果我将作业设置为在12小时后或2周后触发,并且设备处于深度睡眠状态,则该作业将完全不会执行,并且不会显示通知。
我做错什么了吗,我是否忽略了某些内容?如何确保将执行我的工作(确切的时间不是优先考虑的时间,可能是+-30分钟)。但无论如何,必须执行。