使用WorkManager来处理后台任务(Kotlin版)(一)
1 简介
在Android开发中有很多用于处理延迟处理的后台任务的方式。这个代码实验室(codelab)涵盖了WorkManager(一个向后兼容的、灵活的、简单易用的、用于延迟处理后台任务的代码库(library))的用法。
什么是WorkManager
WorkManager是Android JetPack的一部分,是结合了机会性执行和保证执行的的用于处理后台任务的架构组件(Architecture Component)。机会性执行,意为WorkManager将尽快完成您的后台工作。保证执行,意为无论在什么样的情况下,即使用户离开了应用程序, WorkManager也会保证按逻辑执行工作。
WorkManager是一个难以置信的、灵活的代码库,它拥有很多额外的优势。比如:
- 调度一次性或周期性异步任务
- 支持网络条件,存储空间和充电状态等约束
- 将任务链接起来,包括并行运行的任务
- 一个任务的输出结果用于另一个任务的输入参数
- 向后兼容到API 14
- 使不使用Google Play服务都可以
- 遵循系统健康最佳实践
- 配合LiveData可以轻松在UI中显示工作的请求状态
注意:
WorkManager提供了一些API。例如: JobSCheduler和AlarmManager。WorkManager根据诸如用户设备API之类的条件选择要使用的正确API。欲了解更多信息,请查阅WorkManager文档。
什么时候使用WorkManager
对于即使用户离开特定的屏幕或您的应用程序也需要完成的有价值的任务,WorkManager库也是个不错的选择。
以下是使用WorkManager的几个简单例子:
- 上传日志
- 用于过滤图片和保存图片
- 定期将本地数据与网络同步
WorkManager提供有保证的执行,但并非所有任务都需要执行。因此,这不是将所有任务避免在主线程中运行的万能方法。
有关何时使用WorkManager的更多详细信息,请查阅《后台处理指南》。
你会建立什么
近些年来,智能手机越来越擅长拍照。摄影师能够可靠地模糊拍摄神秘事物的日子已经一去不复返了。在此代码实验室中,您将使用Blur-O-Matic,该应用程序可模糊照片和图像并将结果保存到文件中。那是尼斯湖怪兽或evelopera玩具潜水艇吗?使用Blur-O-Matic,没人会知道。
你会学到什么
在你的项目中使用WorkManager
安排一个简单的任务
输入和输出参数
串行的任务
独特的任务
将任务状态展示在UI上
取消任务
任务约束
你需要什么
- 最新稳定版Android Studio
- 你需要熟悉LiveData和ViewModel。如果你对这些类还不够熟悉,查阅《Android生命周期感知组件Codelab》(专门介绍LiveData和ViewModel)或者《Room和View》(架构组件(Architecture Components)的介绍)
如何你在任何地方卡关了
如果你卡关了,如果你需要查看最终状态的代码,你可以使用下面的代码链接:
或者, 如果你更希望从Github克隆完整的WorkManager的代码实验室的代码:
1 | git clone -b kotlin https://github.com/googlecodelabs/android-workmanager |