【问题标题】:Using the WorkManager on Android在 Android 上使用 WorkManager
【发布时间】:2021-05-20 21:34:58
【问题描述】:

在我的应用程序中,如果要上传的数据可用,我需要定期将数据上传到服务器。这不需要立即发生,但也可以延迟几分钟。 WorkManager 似乎是我所读到的一个很好的起点。

我现在不确定该选择哪种方式:

  • 我可以在每次上传内容时安排一次性作业,并在上传失败时重试WorkManager

  • 我可以安排一个周期性的工作来检查是否有工作要做,如果有,做工作。

这两种解决方案似乎各有利弊。选择取决于我仍然有一些问题:

  • 假设我想使用定期作业 - 我什么时候开始?当然,如果我的应用程序是第一次运行,我会先启动它。但是然后:它会在重新启动后继续存在并从它离开的地方拾起,还是我必须在我的应用启动时重新启动它(或者如果收到 BOOT FINISHED 广播)?
  • 我的理解是否正确,即一旦启动定期作业,即使我的应用不再处于活动状态甚至不再运行,它也会继续运行,但仅在设备重新启动之前运行?
  • 如何处理一次性作业重试?一旦安排好,我知道它们会一直运行直到完成,然后被处理掉,或者它们可以自动重新安排。假设它们被重新安排,它们会在设备重新启动后被拾取,还是在这种情况下我必须重新安排它们,因为系统在重新启动时会忘记它们?

编辑
好的,我刚找到一篇博文,上面写着WorkManager 确保即使重新启动应用程序或设备也能完成工作。我要试一试,看看会发生什么。不过,请随时回答我的问题,这样我才能睡得更好......

【问题讨论】:

  • “延迟几分钟” -> 请记住 WorkManager 的最小间隔是(据我所知)15 分钟。
  • 感谢您提供此信息 - 我已经注意到我的 1 分钟间隔似乎没有被考虑在内 :-)

标签: android kotlin android-workmanager


【解决方案1】:

在您的用例中还要注意一点,以确保您使用独特的周期性工作概念,否则您将有多个周期性工作不必要地运行。

【讨论】:

  • 我目前正在评估一次性工作。到目前为止它似乎工作正常,但我仍在与调试作斗争:-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多