当前位置: 首页 > news >正文

WorkManager 系列之一

一句话介绍:是Android官方发布的现代化的后台任务处理方案。

1. 什么是WorkManager?

WorkManager 是Android Jetpack组件架构之一,专为满足应用的后台处理需求而设计。它提供了API,让开发者能够以一种可靠、高效且与系统友好的方式执行可延迟的异步任务。

WorkManager的核心特点:

  • 可靠性:即使应用退出或者设备重启,WorkManager也能确保任务最终会被执行;
  • 兼容性:自动适配不同Android版本,无需关心底层实现差异;
  • 约束条件:支持设置任务执行的条件(如网络可用、电量充足等等)
  • 链式任务:可以创建复杂的工作序列,按顺序或者并行执行

WorkManager像一个可靠的任务管理助手,你告诉它”这个任务很重要,在合适的条件下一定要完成”,然后你可以放心地做其他事情,无需担心任务会被遗忘。

2. 为什么需要WorkManager

Android系统的后台处理机制随着版本迭代经历了多次变革,主要是为了优化电池寿命和用户体验。这导致开发者面临诸多挑战:

传统方案的局限性:

  • Service/IntentService: Android 8.0之后后台限制加强,服务在应用进程中结束后可能被终止;
  • AsyncTask:生命周期与Activity绑定,容易导致内存泄漏,且在Android 11之后被弃用;
  • Handler + Thread:需要手动管理生命周期,无法保证任务在应用退出后完成;
  • AlarmManager:精确度收到Doze模式影响,且无法设置执行条件;
  • JobScheduler:仅支持Android 5.0+,API相对复杂,不同厂商之间实现差异比较大。

这就像在不同的Android版本上,后台任务的规则不断变化,开发者需要编写大量的兼容代码,就像为不同比赛不断修改规则一样负责。

那么 WorkManager的优势就很容易显现出来了:

  • 统一的API:提供一致的接口,内部自动选择最合适的实现方式;
  • 自动兼容:Android 4.0+以上版本自动适配,无效考虑版本差异;
  • 系统集成:与电池优化策略友好配合,不会被系统杀死;
  • 持久化:通过Room数据库存储任务信息,确保重启之后任务仍可执行;
  • 灵活性:支持丰富的约束条件和执行策略。

3. WorkManager的适用场景

WorkManager主要用于可延迟的任务,这些任务不需要立刻完成,但是需要可靠的完成,即使应用不在前台或者设备重启。

那么适合适用WorkManager的场景为:

  • 数据同步:将本地数据定期上传到服务器,或者从服务器获取最新数据;
  • 资源下载:预期内容或者更新资源文件;
  • 数据库维护:定期清理过期数据,优化数据性能;
  • 日志上传:收集应用内日志并在合适的时机上传
  • 媒体操作:图片压缩、视频转码等耗时操作
  • 批量操作:批量发送邮件、消息等需要在后台完成的任务。

不适合WorkManager的场景:

  • 需要立即被执行的任务:如即时通讯、实时响应用户交互
  • 精确定时的任务:需要在精确时间点执行的任务(WorkManager并不是精确的,可能因为系统的调度,时间上可能存在延后)
  • 与UI紧密相连的轻量任务:简单的UI数据加载,使用协程或者RXJava等等

我们可以以实际中的例子,来看一看WorkManager的用法:

case1: 社交应用的媒体上传

用户在拍照或者拍视频之后,应用需要压缩和优化媒体文件(CPU密集型),等待网络连接良好时上传(需要网络约束),即使用户关闭使用,也需要完成上传(需要持久化),那么WorkManager将会是理想的选择,因为它可以设置网络连接约束,也可以在应用退出之后依旧可以执行任务,即使设备重启之后,仍能恢复上传。

case2: 健康应用的数据统计

健康应用需要定期收集的健康数据(定期执行),生成统计报告(CPU密集型),在设备充电且网络正常时同步到服务器(多重约束),那么WorkManager可以完美处理这种场景,通过设置多重约束条件,确保在最合适的时机执行任务,同时不影响用户体验和电池寿命。

相关文章:

  • 《AI赋能云原生区块链,引领供应链溯源革新》
  • 设备健康管理系统是什么,设备健康管理系统多少钱?
  • 开源模型应用落地-shieldgemma-2-4b-it模型小试-多模态内容安全检测(一)
  • 2610.转换二维数组
  • 蓝桥杯2023年第十四届省赛真题-阶乘的和
  • 【LangChain入门 1】安装
  • mac brew 安装的php@7.4 打开redis扩展
  • Elasticsearch8.17 集群重启操作
  • Linux 权限的概念
  • 数据库GreenDao的使用、升级、以及相关常用注释说明
  • 【Linux系统】Linux进程终止的N种方式
  • 河南电站实证,TOPCon较XBC组件发电早晚时段增益7.4%
  • Linux 一步部署DHCP服务
  • Spring WebFlux之流式输出
  • 专业学习|改进的多种群竞争粒子群优化算法
  • vue3 报错 Could not find a declaration file for module ‘/App.vue‘
  • 【免费】2000-2019年各省地方财政国内增值税数据
  • ubuntu20.04系统没有WiFi图标解决方案_安装Intel网卡驱动
  • 在D365 CRM中 实体的Lookup View ,在lookup field的form上配置lookup view,显示少于25条,比如3条
  • 【Auto-Scroll-List 组件设计与实现分析】
  • 领证不用户口本,还需哪些材料?补领证件如何操作?七问七答
  • 国家统计局:4月份居民消费价格同比下降0.1%
  • 5天完成1000多万元交易额,“一张手机膜”畅销海内外的启示
  • 新村回响:一周城市生活
  • 甘肃省政府原副省长赵金云被决定逮捕
  • 商务部再回应中美经贸高层会谈