android - 我可以总是使用 WorkManager 而不是协程吗?
问题描述
我想知道当 WorkManager 有出色的解决方案时,我为什么要打扰 rx 或协程。但是对于几乎所有教程,他们都使用协程,所以 WorkManager 可能有缺点吗?
解决方案
两者的范围不同。WorkManager 将安排可延迟的(用于以后的任何时间)或立即安排。异步任务。
正如文件所说
WorkManager API 可以很容易地指定可延迟的异步任务以及它们应该何时运行。这些 API 让您可以创建任务并将其交给 WorkManager 以立即或在适当的时间运行。
另一方面,协程被设计为只立即和异步地计算给定的任务。
同样在内部,协程和 WorkManager 的工作方式不同。工作管理器严重依赖 Android 系统组件(如服务、警报管理器等)来安排工作,而协程在工作线程上安排工作,并且与 WorkManager (API) 不同,它也是一种语言功能。因此可以肯定地说协程不会超出您的应用程序。另一方面,WorkManager 甚至可以在您的应用程序不活动时执行给定的任务。例如,后台服务。
同样正如 Marko 所回答的,由于其基本设计,使用协程将导致更好的代码可读性和质量。我还想包括ANKO,它是一个很棒的库,它为 Android 的协程提供了有用的 API。
推荐阅读
- rust - 可以在安全的 Rust 中实现没有可变性的单线程零成本记忆吗?
- c# - 比较从字符串转换的两个浮点数
- flutter - 设置永久颤振路径
- jestjs - Jest spyOn mockReturnValue 正在返回未定义的值
- python - Python中带有悬空逗号的Where子句
- azure - 如何为 Azure SQL 创建具有有限权限的新数据库用户
- spring-boot - 服务启动后向领事注册spring boot应用程序
- python - 如何在python中生成每个染色体之和等于1的随机矩阵值染色体?
- angular-routing - Angular 7中路由时组件之间的通信
- c# - log4net的默认位置在哪里