Диспетчер заданий Firebase - задание не запускается, если устройство долгое время находится в спящем режиме - PullRequest
0 голосов
/ 10 ноября 2018

Работа должна быть выполнена в определенное время / дату и час, мой код по расписанию:

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

...