android - 工作开始后Android Work manager约束更改
问题描述
在工作处理过程中约束不满足后,工作经理是否会停止工作。例如,工作需要连接充电器的约束,连接充电器后工作开始,然后充电器断开连接,工作管理器是否会停止工作,因为它不再满足约束
解决方案
如果在 worker 执行期间约束不再满足,WorkManager 将发出停止信号。
请记住,停止在 WorkManager 中是协作的,因此您的 Worker 将需要实现onStopped()
回调,并且它可以isStopped()
在执行长时间运行的循环/计算时使用该方法。
从文档:
您应该合作中止您正在进行的任何工作并释放您的 Worker 持有的任何资源。例如,此时您应该关闭数据库和文件的打开句柄。您可以使用两种机制来了解您的 Worker 何时停止。
另外来自文档:
注意: WorkManager 会忽略接收到 onStop 信号的 Worker 设置的 Result,因为 Worker 已经被视为已停止。
如果您使用的是 CoroutineWorkers,它们将在定义的范围内自动处理停止。来自WorkManager 的线程指南:
CoroutineWorkers 通过取消协程并传播取消信号来自动处理停止。你不需要做任何特别的事情来处理停工。
推荐阅读
- angularjs - AngularJS数据表总是显示没有找到匹配的记录
- angular - 如何使用 Visual Studio Code 将在 Visual Studio 2015 中开发的 Angular 4 项目使用到 Angular 6?
- java - 如何将远程配置获取时间保持 15 分钟
- docusignapi - 有没有办法在签署文件时创建自定义签名?
- django - 尝试将本地 django 连接到 Amazon RDS MySQL 数据库时出现 2026 SSL 连接错误
- javascript - 我们如何检查一个机器人是否在您的不和谐服务器中与另一个机器人
- python - 我已经设置了所有的头信息,但我仍然无法获取数据
- css - 完整性和跨域属性在链接标记中显示为无效
- html - 大图像仍然会破坏具有最大宽度和高度的引导列
- eclipse - Tomcat 找不到我的 REST Web 服务类的类