[译] WorkManager 简介,Android高级工程师进阶学习

换句话说,WorkManager 提供了一个电池友好的 API,它封装了 Android 后台行为限制多年来的演变。这对于需要执行后台任务的 Android 应用程序至关重要!

什么时候使用 WorkManager

无论应用程序进程是否存在,WorkManager 都会处理在满足各种约束条件时需要运行的后台工作。后台工作可以在应用程序位于后台、前台或者应用在前台打开即将转到后台的时候启动。无论应用程序在做什么,后台工作都应该继续进行,或者在 Android 终止其进程时重启其后台工作。

关于 WorkManager 的一个常见误解是它需要在“后台”线程中运行,但不需要在进程死亡时存活。事实并非如此。这种用例还有其他解决方案,如 Kotlin 的协程,ThreadPools 或 RxJava 等库。你可以在后台处理指南中找到有关此用例的更多信息。

有许多不同的情况下,你需要运行后台工作,因此需要使用不同的解决方案来运行后台工作。这篇关于后台运行的博客文章提供了很多关于何时使用 Workmanager 的有用信息。请看博客中的此图表:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图解来自 Android 中的现代后台运行

对于 WorkManager,最适合处理的是必须完成并且可以延迟的后台工作。

首先,问问你自己:

  • 这个任务需要完成吗? 如果应用程序被用户关闭了,是否仍需要完成任务?一个例子是带有远程同步的笔记应用程序;每次你写完一个笔记,你就会期望该应用程序将你的笔记与后端服务器同步。即使您切换到另一个应用程序并且操作系统需要关闭应用程序以回收一些内存。即使重新启动设备也会发生这种情况。WorkManager 能够确保任务完成。

  • 这个任务可以延迟吗? 我们可以稍后运行任务,还是只在现在运行才可以用?如果任务可以稍后运行,那么它是可延迟的。回到前面的例子,立即同步你的笔记会很好,但是如果不能立即同步而是稍后进行的话也没什么大问题。WorkManager 尊重操作系统后台限制,并尝试以电池高效的方式运行你的工作。

因此,作为指导原则,WorkManager 适用于需要确保系统将运行它们的任务,即使应用程序退出也是如此。它不适用于需要立即执行或需要在确切时间执行的后台工作。如果你需要在准确的时间执行工作(例如闹钟或事件提醒),请使用 AlarmManager。对于需要立即执行但长时间运行的工作,你通常需要确保在前台执行工作;是否通过限制执行到前台(在这种情况下工作不再是真正的后台工作)或使用前台服务

当你需要在更复杂的场景中触发一些后台工作时,WorkManager 可以并且应该与其他 API 配对使用:

  • 如果你的服务器触发了工作,WorkManager 可以与 Firebase Cloud Messaging 配对使用。
  • 如果你正在使用广播接收器监听广播,然后需要触发长时间运行的工作,那么你可以使用 WorkManager。请注意,WorkManager 支持许多通常作为广播传播的常见 Constraints — 在这些情况下,你不需要注册自己的广播接收器。

为什么要用 WorkManager?

WorkManager 运行后台工作,同时能够为你处理电池和系统健康的兼容性问题和最佳实践。

此外,你可以使用 WorkManager 安排定时任务和复杂的从属任务链:后台工作可以并行或顺序执行,你可以在其中指定执行顺序。WorkManager 无缝地处理任务之间的输入和输出传递。

你还可以设置后台任务运行时间的标准。例如,如果设备没有网络连接,则没有理由向远程服务器发出 HTTP 请求。因此,您可以设置约束条件,该任务只能在网络连接时运行。

作为保证执行的一部分,WorkManager 负责在设备或应用程序重启时保持工作。你也可以轻松地定义重试策略如果你的工作已停止并且您想稍后重试。

最后,WorkManager 允许你观察工作请求的状态,以便你可以更新 UI。

总而言之,WorkManager 提供了以下好处:

  • 处理不同系统版本的兼容性
  • 遵循系统健康最佳实践
  • 支持异步一次性和周期性任务
  • 支持带输入/输出的链式任务
  • 允许你设置在任务运行时的约束
  • 即使应用程序或设备重启,也可以保证任务执行

让我们看一个具体的例子,我们构建一个将过滤器应用于图像的并发任务管道。然后将结果发送到压缩任务,然后发送到上传任务。

我们可以为这些任务定义一组约束,并指定何时可以执行它们:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级安卓工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Android移动开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
img

最后

今天关于面试的分享就到这里,还是那句话,有些东西你不仅要懂,而且要能够很好地表达出来,能够让面试官认可你的理解,例如Handler机制,这个是面试必问之题。有些晦涩的点,或许它只活在面试当中,实际工作当中你压根不会用到它,但是你要知道它是什么东西。

最后在这里小编分享一份自己收录整理上述技术体系图相关的几十套腾讯、头条、阿里、美团等公司2021年的面试题,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。

还有 高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料 帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。

Android学习PDF+架构视频+面试文档+源码笔记领取

【Android核心高级技术PDF文档,BAT大厂面试真题解析】

【算法合集】

【延伸Android必备知识点】

【Android部分高级架构视频学习资源】

【延伸Android必备知识点】

[外链图片转存中…(img-2Vrdc4Fc-1710851385558)]

【Android部分高级架构视频学习资源】

Android精讲视频领取学习后更加是如虎添翼!进军BATJ大厂等(备战)!现在都说互联网寒冬,其实无非就是你上错了车,且穿的少(技能),要是你上对车,自身技术能力够强,公司换掉的代价大,怎么可能会被裁掉,都是淘汰末端的业务Curd而已!现如今市场上初级程序员泛滥,这套教程针对Android开发工程师1-6年的人员、正处于瓶颈期,想要年后突破自己涨薪的,进阶Android中高级、架构师对你更是如鱼得水,赶快领取吧!

  • 15
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值