Android WorkManager的使用场景

3
我正在学习关于 WorkManager 的知识 (https://developer.android.com/guide/background),但是两个相互矛盾的陈述让我感到困惑。它说 WorkManager 应该用于以下两种情况:
  1. 需要立即执行并需要持续处理的任务
  2. 可以在将来的任何时间运行的任务,并且可以被延迟执行
请问有人能够解释这个问题,并给我展示两个简单的使用 WorkManager 完成以上两种情况的代码示例吗?谢谢。
1个回答

3

WorkManager基本上是将工作从您的进程/活动转移给专用工作者,这意味着您的应用程序不需要处于活动状态,即可完成您的工作

上述两个陈述都有道理,我不会写代码,但我会提到支持两个陈述的用例。

Statement1说的是应立即执行并需要持续处理的任务,这意味着您可以立即安排任何任务并长时间运行,例如,考虑在单击按钮时上传一些图像,因此您将在用户单击上传时立即启动UploadWorker,并且即使用户杀死您的应用程序,上传也应该仍然发生,这将由WorkManager处理。

Statement2说的是可以在将来的任何时间运行的任务可以被延迟,这意味着您可以在将来的某个时间点安排一些工作,并要求WorkManager在您期望的时间运行它。一个典型的例子是备份,您想在每天早上备份用户数据,那么您可以创建一个BackUpWorker并请求WorkManager定期在未来的某个时间运行它。


你提到的第二种情况难道不是使用AlarmManager的理想场景吗? - user8934776
WorkManager是一种现代化的库,它使用多个特定于框架的调度程序来根据最佳适用选项、设备、电池、操作系统版本等执行工作,其中之一是Alarm Manager。 - Rajan Kali
好的,我还有一个问题需要问你。"对于可以在未来任何时间运行的任务,可以被延迟执行"。我们是否可以通过与第一种情况相同的调用workmanager的方式来实现这一点,但只需添加一组约束条件(例如“必须连接到wifi”),就可以使请求变得可延迟。这是他们的意思吗? - user8934776
是的,当所有约束条件都满足时,您的工作将被安排,但不能保证在精确时间执行,而是取决于系统约束。 - Rajan Kali
好的,很酷。我还想说自从我们开始交谈以来,我已经阅读了一些资料,我认为workManager仍然没有将AlarmManager包含在内。它们是分开的并且独立地被称为另一个。在某些情况下,我们可以将它们结合使用,但这并不意味着workManager库本身包含AlarmManager,我想... - user8934776
总的来说,感谢您的回答,您帮了我一个大忙。 - user8934776

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接