仅在应用打开时执行定期WorkManager

时间:2019-04-08 18:13:26

标签: java android broadcastreceiver android-workmanager

关闭应用程序后,“定期工作请求”不会在后台继续。我曾尝试在华为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();
               }
           }
}

最后,“ Notification Provider”只是一个简单的通知类,它构建一个通知并返回Result.success();

我需要最初的定期工作请求,每24小时触发一次,以查看是否需要提供通知。

0 个答案:

没有答案