Работа должна быть выполнена в определенное время / дату и час, мой код по расписанию:
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 минут). Но это должно быть выполнено, несмотря ни на что.