Периодический WorkManager выполняется только при открытом приложении - PullRequest
0 голосов
/ 08 апреля 2019

Периодический запрос на работу не продолжается в фоновом режиме, когда приложение закрыто.Я пробовал занести в белый список приложение на моем Huawei P20 Pro, но оно все равно не работает.

Я пробовал UniquePeriodicWorkRequest, заносил в белый список приложение в диспетчере батарей и т. Д.неделю сейчас.И я не могу заставить его работать так, как должно.

Построение начального периодического запроса на работу из операции:

PeriodicWorkRequest waterScheduler = new 
PeriodicWorkRequest.Builder(WaterNotifier.class, 24, TimeUnit.HOURS)                                        
WorkManager.getInstance().enqueue(waterScheduler);

Запрос на работу (WaterScheduler)


   public Worker.Result doWork() {
   //fire at scheduled time
    if (datesB.contains(CalendarDay.today()) && bestScheduleTime ) {
      PeriodicWorkRequest waterNotifer = new 
      PeriodicWorkRequest.Builder(NotificationProvider.class, 15, 
                              TimeUnit.MINUTES)
     .addTag(NOTIFIER_TAG)
    .build();
    WorkManager.getInstance().enqueue(waterNotifer);
    isScheduledRequest = true;

    return Result.success();
   } else {
WorkManager.getInstance().getWorkInfosForUniqueWorkLiveData("WaterNotifier_CurrentDate");
                   if(isScheduledRequest){
                       isScheduledRequest = false;
                       WorkManager.getInstance().cancelAllWorkByTag(NOTIFIER_TAG);
                   }
                   return Result.failure();
               }
           }
}

Наконец, «Поставщик уведомлений» - это просто простое уведомлениекласс, который создает уведомление и возвращает Result.success ();

Мне нужно, чтобы первоначальный периодический запрос на работу срабатывал один раз в 24 часа, чтобы проверить, нужно ли предоставлять уведомление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...