美文网首页
WorkManager

WorkManager

作者: 筱湮 | 来源:发表于2023-01-14 01:59 被阅读0次

    1. WorkManager是什么

    WorkManager是适合用于持久性工作的推荐解决方案。如果工作始终要通过应用重启和系统重新启动来调度,便是持久性的工作。由于大多数后台处理操作都是通过持久性工作完成的,因此 WorkManager 是适用于后台处理操作的主要推荐 API

    持久性工作的类型

    WorkManager 可处理三种类型的持久性工作:

    立即执行:必须立即开始且很快就完成的任务,可以加急。
    长时间运行:运行时间可能较长(有可能超过 10 分钟)的任务。
    可延期执行:延期开始并且可以定期运行的预定任务。

    2. 何时使用WorkManager

    管理和调度可延迟的,但需保证执行的后台任务库

    1.可延迟的:即使不立即执行,仍有必要在未来完成的任务
    例如:向服务器发送数据(上传分析数据)

    1. 保证执行:即使在应用程序被关闭,或者设备重启的情况下,任务也会照常执行
      例如:备份图片

    以下是一些适合使用 WorkManager 的任务的典型示例

    • 上传日志
    • 对图片应用滤镜并保存图片
    • 定期将本地数据与网络同步

    值得注意的是,我们谈到的“后台操作”,不是,也不包括“后台线程”。

    WorkManager不能用来替代Kotlin Coroutines,线程池,以及RxJava等API,但可以和他们配合使用。

    WorkManager也不适用于需要在特定时间触发的任务(可以用AlarmManager)

    3. 如何使用WorkManager

    需要了解以下几个 WorkManager 类:

    • Worker:此位置用于放置您希望在后台执行的实际工作的代码。您需要扩展此类并替换 doWork() 方法。
    • WorkRequest:此类表示请求执行某些工作。您将在创建 WorkRequest 的过程中传入 Worker。在创建 WorkRequest 时,您还可以指定 Constraints等内容,例如运行 Worker 的时间。
    • WorkManager:这个类实质上可以调度 WorkRequest 并使其运行。它以一种在系统资源上分散负载的方式调度 WorkRequest,同时遵循您指定的约束条件。

    具体示例代码请看官方示例:https://developer.android.com/topic/libraries/architecture/workmanager/basics?hl=zh-cn

    4. WorkManager的优势

    WorkManager 是一个极其灵活的库,具有许多其他优势。这其中包括:

    • 支持异步一次性任务和定期任务
    • 支持网络条件、存储空间和充电状态等约束条件
    • 链接复杂的工作请求,包括并行运行工作
    • 将来自一个工作请求的输出用作下一个工作请求的输入
    • 处理到 API 级别的兼容性,可向后兼容至 API 级别 14(请参阅备注)
    • 无论是否使用 Google Play 服务都可以运行
    • 遵循系统健康最佳做法
    • 提供 LiveData 支持,可在界面中轻松显示工作请求状态

    注意
    WorkManager 依赖于若干 API,例如 JobSchedulerAlarmManager。WorkManager 会根据用户设备 API 级别等条件选择使用适合的 API。如需了解详情,请查看 WorkManager 文档

    练习Demo(使用WorkManager Codelab编写的Demo): https://github.com/ooxiaoyan/android-workmanager-start_kotlin

    (使用 Blur-O-Matic,对照片进行模糊处理,并将处理后的照片保存到文件中)

    最后,附学习资源:

    相关文章

      网友评论

          本文标题:WorkManager

          本文链接:https://www.haomeiwen.com/subject/rotncdtx.html