Android Work Manager与服务?

Sus*_*ger 18 java android intentservice android-jetpack android-workmanager

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

Sag*_*gar 28

WorkManager具有以下功能:

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

以下是有用的情况:

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

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

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

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

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

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

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

  • 现在还有理由继续使用“IntentService”吗? (3认同)
  • @MehdiJahedManesh`doWork()`将在后台线程中执行. (2认同)
  • @NicolasJafelle是的.您可以使用PeriodicWorkRequest.即使您的应用程序强制退出或设备重新启动,也可以保证该任务正常运行 (2认同)