Java Android工作管理器与服务?

Java Android工作管理器与服务?,java,android,intentservice,android-jetpack,android-workmanager,Java,Android,Intentservice,Android Jetpack,Android Workmanager,在我的Android应用程序中,我有多个intent服务,它们一个接一个地运行,第一个intent服务由广播触发。几天前我遇到过,我非常喜欢Worker和WorkManager类的简单性。与常规意向服务相比,工作经理的优点和缺点是什么?考虑到我将来可能需要编写更多的意向服务,我现在是否应该转为工作经理?还有哪个选项可以帮助我轻松测试代码?WorkManager具有以下功能: 提供可以在进程死亡后生存的任务 它可以唤醒应用程序和应用程序的进程来完成工作,从而保证工作将得到执行 允许观察工作状态和

在我的Android应用程序中,我有多个intent服务,它们一个接一个地运行,第一个intent服务由广播触发。几天前我遇到过,我非常喜欢Worker和WorkManager类的简单性。与常规意向服务相比,工作经理的优点和缺点是什么?考虑到我将来可能需要编写更多的意向服务,我现在是否应该转为工作经理?还有哪个选项可以帮助我轻松测试代码?

WorkManager具有以下功能:

  • 提供可以在进程死亡后生存的任务
  • 它可以唤醒应用程序和应用程序的进程来完成工作,从而保证工作将得到执行
  • 允许观察工作状态和创建复杂工作链的能力
  • 允许工作链,允许将大块工作分离为小块工作,并基于不同的约束执行它们
  • 优雅地管理打盹模式或操作系统施加的其他限制
以下情况可能会有所帮助:

  • 执行长时间运行的后台任务,如上载媒体
  • 在数据库中解析和存储数据
  • 需要在流程死亡后生存的关键任务
考虑到我将来可能需要编写更多的意向服务,我现在是否应该转为工作经理?

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

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

在使用它之前,您确实需要权衡是否需要它的功能。由于谷歌几乎在重新改变我们的编码方式,WorkManager将是我们后台处理难题的解决方案。当然,这将是最重要的选择,因为它抽象了操作系统施加的几个约束的处理。您应该考虑使用它来实现未来。

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


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

您好,因为doWork()方法是同步的,有没有办法用RxJava做一些异步工作?@MehdiJahedManesh
doWork()
将在后台线程中执行。@Sagar让我们假设我想在我的应用程序中做一些定期工作。我可以直接使用PeriodicWorkRequest,而不用担心process app是否处于活动状态?我的意思是WorkManager提供了与服务相同的行为,即即使应用程序/进程被终止,是否继续?谢谢@尼古拉斯·贾菲勒:是的。您可以使用PeriodicWorkRequest。即使您的应用程序已强制退出或设备已重新启动,任务也会保证运行。这些天仍然有理由使用
IntentService
?您是否需要此api来显示通知?