首页 > 解决方案 > 我可以总是使用 WorkManager 而不是协程吗?

问题描述

我想知道当 WorkManager 有出色的解决方案时,我为什么要打扰 rx 或协程。但是对于几乎所有教程,他们都使用协程,所以 WorkManager 可能有缺点吗?

标签: androidandroid-jetpackkotlinx.coroutinesandroid-workmanager

解决方案


两者的范围不同。WorkManager 将安排可延迟的(用于以后的任何时间)或立即安排。异步任务。

正如文件所说

WorkManager API 可以很容易地指定可延迟的异步任务以及它们应该何时运行。这些 API 让您可以创建任务并将其交给 WorkManager 以立即或在适当的时间运行。

另一方面,协程被设计为只立即和异步地计算给定的任务。

同样在内部,协程和 WorkManager 的工作方式不同。工作管理器严重依赖 Android 系统组件(如服务、警报管理器等)来安排工作,而协程在工作线程上安排工作,并且与 WorkManager (API) 不同,它也是一种语言功能。因此可以肯定地说协程不会超出您的应用程序。另一方面,WorkManager 甚至可以在您的应用程序不活动时执行给定的任务。例如,后台服务。

同样正如 Marko 所回答的,由于其基本设计,使用协程将导致更好的代码可读性和质量。我还想包括ANKO,它是一个很棒的库,它为 Android 的协程提供了有用的 API。


推荐阅读