【问题标题】:Periodic work requests using Work Manager not repeat the work使用工作管理器的定期工作请求不重复工作
【发布时间】: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


【解决方案1】:

您使用了 TimeUnit.SECONDS 并将其设置为 6 秒。 workManager 的最短时长为 15 分钟!

【讨论】:

  • 那是他的初始延迟,不是重复间隔。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多