如何在Android上统一任务计划

原文由开发工程师Caren Chang发表,此为译文。

img

Android用户通常会很在意手机的电池寿命。通常,你如何计划调度你app的后台任务,将会对手机电池的使用有着很大的影响。为了帮助你打造对手机电池更友好的app,我们将介绍一个可以满足所有可延迟的后台处理需求的统一解决方案WorkManager

自2020年11月1日开始,我们就围绕着WorkManager统一了Android的后台延时任务,并且原先的GCMNetworkManager将会被弃用。

为什么是WorkManager

WorkManager API整合了之前的Firebase Job Dispatcher(FJD)和GcmNetworkManager两个方案,提供了一个新的一致性的方案很好的优化了电池使用时长,且兼容到了API14。比如,你有如下需求:当手机正在充电同时连接到WiFi的时候,你的app需要在后台发送日志文件到服务器。这种情况下,WorkManager将会轻而易举的在这种限制下执行。此外,与FJD和GcmNetworkManager不同,它不需要Google Play服务。

WorkManager的其他一些关键功能包括:

  • 你的延时任务在手机重启后依然生效
  • 支持一次性或周期性的任务
  • 监控和管理任务
  • 链式任务

对开发者来说意味着什么

现在WorkManager库已经很成熟了,所以我们决定弃用其他的方案以简化开发者的工作流程,并且专注于WorkManager的稳定性和功能性。

  • 我们于2019年4月宣布弃用FirebaseJobDispatcher库。该库将在2020年4月归档,我们将不再为库中提交的问题提供支持。

  • 此外,我们现在宣布弃用GCMNetworkManager。该库不再具有任何新功能,从2020年11月开始,我们将不再为与该库有关的问题提供支持。

  • 此外,一旦您的应用将目标API级别(targetSdkVersion)更新为高于Android 10(API级别29),FirebaseJobDispatcher和GcmNetworkManager API调用将不再在运行Android Marshmallow(6.0)及更高版本的设备上运行。

迁移到WorkManager

现在您应该将应用迁移到WorkManager了!您可以先阅读WorkManager的官方文档

If your app is still using FirebaseJobDispatcher, you can migrate your app to WorkManager by following the migration guide. A similar migration guide from GCMNetworkManager to WorkManager is also available.

如果您的应用程序仍在使用FirebaseJobDispatcher,则可以按照迁移指南将应用程序迁移到WorkManager。也提供了类似的从GCMNetworkManager到WorkManager的迁移指南。

YouTube最近因其后台计划需求而转移到WorkManager,并报告了应用程序启动时间的缩短以及崩溃率下降8%。

向前看

该团队致力于改善并继续在WorkManager上进行功能开发。如果您在使用该库时遇到问题,对您希望看到的功能有建议,或者对库有任何反馈,请提出issue