如何解决开始工作后,Android Work Manager约束更改
在工作进行过程中未满足约束条件后,工作经理会停止工作吗? 例如,工作需要充电器连接约束,在连接充电器后,工作开始,然后充电器断开连接,由于不再满足约束条件,工作经理会停止工作吗?
解决方法
如果在执行工作程序期间不再满足约束条件,WorkManager将发出停止信号。
请记住,停工在WorkManager中是协作的,因此您的Worker将需要实现onStopped()
回调,并且在执行长时间运行的循环/计算时可以使用isStopped()
方法。
来自doc:
您应该合作中止您正在进行的任何工作,并释放您的工人持有的任何资源。例如,此时您应该关闭数据库和文件的打开句柄。您可以使用两种机制来了解工作人员何时停止。
文档中的Alsoi:
注意:由于已认为该工作程序已停止,WorkManager会忽略已收到onStop信号的工作程序的结果集。
如果您使用的是CoroutineWorkers,它们将在定义的范围内自动处理停工。 来自WorkManager's threading guide:
协程工人通过取消协程并传播取消信号来自动处理停工。您不需要做任何特殊的事情来处理停工。