加入收藏 | 设为首页 | 会员中心 | 我要投稿 南通站长网 (https://www.0513zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 外闻 > 正文

多进程应用中使用 WorkManager

发布时间:2021-04-07 12:32:58 所属栏目:外闻 来源:互联网
导读:意: 您需要传递完全限定的进程名称作为setProcessName的参数,该名称由您的应用包名称,后跟英文冒号和主机的进程名称组成,例如com.example:remote。 使用 work-multiprocess 时,您需要使用RemoteWorkManager(而非WorkManager) 来管理您的工作请求。Remote

意: 您需要传递完全限定的进程名称作为  setProcessName 的参数,该名称由您的应用包名称,后跟英文冒号和主机的进程名称组成,例如  com.example:remote 。

使用 work-multiprocess 时,您需要使用 RemoteWorkManager (而非 WorkManager ) 来管理您的工作请求。 RemoteWorkManager 将始终使用指定的进程将您的工作加入队列。这可确保您不会在调用进程中意外初始化新的 WorkManager。进程中调度程序也会在指定的同一进程中运行。

  • RemoteWorkManager

     

优势

按照上述方法配置 WorkManager 并使用 RemoteWorkManager 调度作业时,您的工作会在多进程应用中得到更快速、更可靠的管理。这是因为 SQLite 争用 情况会大大减少 (因为我们不再依赖于以文件为基础的锁定),且不再需要跨进程的作业协调,因为您的应用仅会在您指定的进程中运行单个 WorkManager 实例。

  • 争用

     

行为变更 :twisted_rightwards_arrows:

作业协调

之前,当 ActivityManager 无法实例化 JobService 以启动作业时,该作业将因为平台中的底层问题而被静默删除。WorkManager 现在可确保通过协调 WorkRequest 对象与作业创建 "应用" 实例时,每个 WorkRequest 都会有一个后备调度程序作业。

限制内部数据库增长

我们发现应用崩溃的原因之一是设备存储空间不足。这种情况主要发生在存储空间本来就很少的设备上。但是,当应用调度 大量 工作时,导致设备存储空间不足的部分原因在于 WorkManager。

默认情况下,内部的 WorkManager 数据库会将已完成作业的记录保留 7 天。而现在,这个期限已减少至 1 天,大大降低了数据库的大小。

我们缩短了缓冲区持续时间,这样您就能借助 keepResultsForAtLeast() API 控制作业应被保留的时长。

全新测试 API :sparkles:

如果您将 ListenableFuture 和 WorkManager 配合使用,测试工作会变得更轻松 — TestListenableWorkerBuilder Kotlin 扩展程序现在可以接收任何类扩展 ListenableWorker ,从而在测试过程中为您提供更高的灵活性。

问题修复 :bug:

除了新增的功能,此版本还包含多个错误修复,以提高 WorkManager 的稳定性、可靠性和性能。您可以在 版本说明 中查看所有更改以及修复的错误。

  • 版本说明

     

如何改进 WorkManager

通过 GitHub 向 WorkManager 贡献内容 :woman:‍:computer:

WorkManager 以及其他几个 Jetpack 库都接受通过 GitHub 贡献的内容。

Alan Viverette 撰写了 一篇关于整个流程的 详尽博文 。

(编辑:南通站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读