关闭应用程序后,“定期工作请求”不会在后台继续。我曾尝试在华为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小时触发一次,以查看是否需要提供通知。