【发布时间】:2020-06-20 05:44:59
【问题描述】:
我尝试使用工作管理器每 20 分钟发送一次通知我第一次打开应用程序时它只发送一次,然后它不会再次发送通知是什么原因
build.gradle(应用程序)
def work_version = "2.3.4"
implementation "androidx.work:work-runtime:$work_version"
工人阶级
public class MyWorker extends Worker {
Context context ;
public MyWorker(Context context, WorkerParameters workerParams) {
super(context, workerParams);
this.context = context ;
}
@NonNull
@Override
public Result doWork() {
NotificationHelper.PrepareNotification(context);
return Result.success();
}
}
构建定期工作请求
WorkRequest SendNotification = new PeriodicWorkRequest.Builder(MyWorker.class , 20 , TimeUnit.MINUTES)
.addTag("Notification")
.setInitialDelay(6 , TimeUnit.SECONDS)
.build() ;
WorkManager.getInstance(context).enqueue(SendNotification) ;
【问题讨论】:
-
我认为您的工作经理特定代码没有任何问题!您是否可以尝试在
doWork中添加日志语句或写入文件以确保调用工作管理器并正常工作?问题可能出在NotificationHelper代码中。 -
我遇到了类似的问题。它只运行第一次,似乎没有重新安排。然后,如果我打开应用程序(在您的情况下是 15 分钟 - 20 分钟之后),它会完成我想要的工作。另外,通过查看日志,我可以看到工作人员甚至没有在“第二次运行”时开始,所以关于工作人员之后所做的事情似乎没有任何问题
标签: android android-workmanager background-task