【问题标题】:workmanager on bootreceivedbootreceived 上的工作经理
【发布时间】:2019-04-22 06:32:27
【问题描述】:

我正在尝试启动,为什么工作管理器不会启动onbootreceived?

Constraints constraints = new Constraints.Builder().build();

PeriodicWorkRequest saveRequest = new PeriodicWorkRequest.Builder(UploadWorker.class, 1, TimeUnit.MINUTES)
    .addTag("activation")
    .build();

OneTimeWorkRequest otr = new OneTimeWorkRequest.Builder(UploadWorker.class).build();
WorkManager.getInstance().cancelAllWork();
WorkManager.getInstance().pruneWork();

WorkManager.getInstance().enqueueUniquePeriodicWork("activation", ExistingPeriodicWorkPolicy.REPLACE, saveRequest);

【问题讨论】:

  • Log.d("testingworkmanager", "bootreceived"); 有效吗?
  • 是的,它的工作在 bootreceive 中很有趣,但在 uploadworker 类中没有
  • 我已经修复了它,但它在启动时运行了大约 15 次

标签: java android androidx android-workmanager


【解决方案1】:

你的代码有几个问题:

  1. 您没有指定任何约束
  2. doWork 应该返回 Result.success()/Result.failure()/Result.retry() 如果你想返回数据,你应该使用这个 API: public static 结果成功(@NonNull Data outputData)

【讨论】:

  • 实际上它正在运行,但现在只有一次即使我将定期工作设置为 1 分钟间隔,我已经更新了我的代码
  • 周期性工作器的最小间隔为 15 分钟。这可能是您的问题的原因 public static final long MIN_PERIODIC_INTERVAL_MILLIS PeriodicWorkRequest 的最小间隔持续时间(以毫秒为单位)。常数值:900000 (0x00000000000dbba0)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多