何时使用 WorkManager
选择合适的后台任务工具
何时使用 WorkManager 是 CoddyKit 上的免费 Android Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Android Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Android Academy 课程共包含 4 节课。
何时使用 WorkManager
WorkManager 是 Android 上用于可延迟且有保证的后台工作的推荐 API。如果某项任务最终必须运行,即使应用关闭或设备重启后仍然如此,那么 WorkManager 就是合适的工具。
可延迟且有保证
两个关键词定义了 WorkManager 的适用范围:
- 可延迟:不需要立即运行,可以等待合适的条件
- 有保证:最终一定会运行,即使应用退出或设备重启也不受影响
适用场景
WorkManager 适合执行以下工作:
- 上传日志或分析数据
- 与服务器同步数据
- 定期备份内容
- 压缩或处理图像
这些工作都可以等待,并且不能丢失。
何时不要使用它
以下情况不适合使用 WorkManager:
- 与当前界面相关、需要在应用内立即完成的工作:请在
viewModelScope中使用协程 - 精确时间的闹钟:请使用
AlarmManager - 由用户发起且必须立即完成的长时间任务:可以考虑使用前台服务
它会维护系统健康
WorkManager 会批量处理并延后工作,以适应休眠模式、电量和后台限制。您描述需求,系统选择高效的运行时间,从而节省电量。
约束决定执行时机
您可以附加“仅在不按流量计费的网络上运行”或“仅在充电时运行”等约束。WorkManager 会等待这些条件满足后再运行任务。
它会处理持久化
WorkManager 会将工作队列存储在内部数据库中。如果应用被终止或手机重启,您安排的工作会得到恢复并继续运行。这些功能无需您额外实现。
一次性与周期性工作
WorkManager 支持两种工作形式:
- OneTimeWorkRequest:运行一次
- PeriodicWorkRequest:按时间间隔重复运行(最短 15 分钟)
内置重试
如果工作出现暂时性失败,返回 Result.retry() 会告诉 WorkManager 根据退避策略稍后重试,因此您无需自行编写重试逻辑。
添加依赖
将 WorkManager 运行时工件(包含 KTX 协程支持)添加到模块的 Gradle 文件中。
dependencies {
implementation("androidx.work:work-runtime-ktx:2.9.1")
}思维模型
可以把 WorkManager 想象成一个可靠的后台任务待办清单:您添加带有条件的任务,系统会承诺在合适的时间完成它,即使中途受到各种干扰也不例外。
快速检查
测试您对 WorkManager 使用时机的理解。
回顾
您已经了解了 WorkManager 的用途:
- 运行可延迟且有保证的后台工作
- 适合同步、上传和备份;不适合立即执行或需要精确时间的工作
- 能够跨应用终止和设备重启持久保存工作,遵守电量限制并支持重试
- 支持带约束的一次性和周期性工作
下一节:创建 Worker。
常见问题解答
「何时使用 WorkManager」课时是免费的吗?
是的 — 「何时使用 WorkManager」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Android Academy 课程的其余内容,请升级到 CoddyKit PRO。 Android Academy 课程共包含 4 节课。
「何时使用 WorkManager」这节课中我会学到什么?
选择合适的后台任务工具 你通过在浏览器中直接运行的动手代码来练习 Android Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Android Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Android Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。
「何时使用 WorkManager」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Android Academy 课中编写并运行代码吗?
能。每节 Android Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 何时使用 WorkManager
- 创建 Worker
- 约束和调度
- 周期性任务和链式任务