Android Work Manager与服务?

在我的Android应用程序中,我有多个意图服务,这些服务一个接一个地运行,并且第一个意图服务由广播进行攻击。 几天前我遇到了Work Manager,并且非常喜欢Worker和WorkManager类的简单性。 工作管理器对常规意图服务的利弊是什么? 我现在应该转换到工作经理,考虑到将来我可能不得不写更多的意向服务吗? 还有哪个选项可以帮助我轻松测试代码?

WorkManager具有以下function:

  • 提供可以在过程死亡中幸存的任务
  • 它可以唤醒应用程序和应用程序的进程来完成工作,从而保证工作将被执行。
  • 允许观察工作状态和创建复杂工作链的能力
  • 允许工作链,允许将大块工作分成小作品并根据不同的约束执行它们
  • 优雅地管理打盹模式或OS强加的其他限制。

以下是有用的情况:

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

我现在应该转换到工作经理,考虑到将来我可能不得不写更多的意向服务吗?

在大多数情况下,它应该是IntentService的替代品,但在使用之前必须仔细考虑。 可能是因为IntentService不是最好的选择。

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

在使用它之前,你真的需要权衡它是否需要它的function。 由于谷歌几乎正在改变我们编码的方式,因此WorkManager将成为我们背景处理问题的解决方案。 当然,它是最重要的选择,因为它抽象了操作系统强加的几个约束的处理。 您应该考虑将其用于将来的实现。

还有哪个选项可以帮助我轻松测试代码?

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