微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PeriodicWorkRequest 不定期工作

如何解决PeriodicWorkRequest 不定期工作

我按照 Android 的 WorkManager 文档 here 构建了一个简单的 PeriodicWorkRequest。我基本上需要一个每 15 分钟运行一次的工人。然而,我的工人只运行一次,再也不会运行了。

这是我开始工作请求的方式:

PeriodicWorkRequest myWorkRequest =
            new PeriodicWorkRequest.Builder(
                    MyWorker.class,PeriodicWorkRequest.MIN_PERIODIC_INTERVAL_MILLIS,TimeUnit.MILLISECONDS
            ).build();

WorkManager.getInstance(this).enqueue(myWorkRequest);

我的worker类只是里面的一个系统日志,只是为了测试一下。这是工作人员的相关部分:

@Override
public Result doWork() {
    Log.d("Worker runs");
    return Result.success();
}

我希望这个工人每 15 分钟运行一次。但是,它只会在应用启动时运行一次,以后再也不会运行了。

我已经搜索了很多并注意到了一些关于它的事情,但仍然没有运气:

  • 时间间隔很重要,必须至少为 15 分钟,同样回答 here。但是,我的间隔已经是常数 PeriodicWorkRequest.MIN_PERIODIC_INTERVAL_MILLIS 所以它应该可以使用它。我什至尝试过 16 分钟,但也不起作用。

  • 一个建议是使用唯一 ID,以防它们按照 here 所述相互取消。我添加一个标签并按如下方式启动了工作程序:

    WorkManager.getInstance(this).enqueueUniquePeriodicWork(
         UNIQUE_ID,ExistingPeriodicWorkPolicy.REPLACE,myWorkRequest);
    

    然而这并没有改变,它仍然只运行一次。

  • 我了解到 WorkManager 存在一些错误,可能无法在某些手机上正常运行。但是我尝试了不同的设备和模拟器,但在其中任何一个中都不起作用。

我的 WorkManager 版本为 "androidx.work:work-runtime:2.5.0",目前我正在 Android 11 模拟器上进行测试。 任何帮助将不胜感激,谢谢!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。