Android Work Manager vs Services?

在我的Android应用程序中,我有多个意图服务,它们一个接一个地运行,第一个意图服务由广播进行三次。几天前,我遇到了Work Manager,我真的很喜欢Worker和WorkManager类的简单性。与常规意向服务相比,工作管理器的优缺点是什么?考虑到将来我可能不得不编写更多意图服务的事实,我现在是否应该切换到工作管理器?另外,哪个选项可以帮助我轻松测试代码?


答案 1

WorkManager具有以下功能:

  • 提供可在过程死亡后幸存下来的任务
  • 它可以唤醒应用程序和应用程序的进程来完成工作,从而保证工作将被执行。
  • 允许观察工作状态并能够创建复杂的工作链
  • 允许工作链,允许将大块工作分成小工作,并根据不同的约束执行它们
  • 正常管理低电耗模式或操作系统施加的其他限制。

以下是有帮助的情况:

  • 执行长时间运行的后台任务,如上传媒体
  • 在数据库中解析和存储数据。
  • 需要从过程死亡中幸存下来的关键任务

考虑到将来我可能不得不编写更多意图服务的事实,我现在是否应该切换到工作管理器?

在大多数情况下,它应该被意图服务所取代,但在使用它之前你必须仔细考虑。可能是IntentService最初不是最好的选择。

WorkManager 不是对所有后台任务的回答。例如您不应该使用它来处理付款,因为它不需要在流程死亡中幸存下来,并且这些任务需要立即执行。请考虑使用前台服务。使用它们来解析数据和视图内容也不是一个好主意。

在使用它之前,你真的需要权衡你是否需要它的功能。由于Google几乎正在重新调整我们的编码方式,WorkManager将成为我们后台处理问题的解决方案。可以肯定的是,这将是最重要的选择,因为它抽象了操作系统施加的几个约束的处理。您应该考虑将其用于将来的实现。

另外,哪个选项可以帮助我轻松测试代码?

Google还提供了测试库,方便了WorkManager的测试。它仍在开发中,但在发布之前应该会变得更加强大。


答案 2

推荐