如何解决如何在 WorkManager 中链接独特的工作?
我刚刚发现 Unique Work 显然是:
一个强大的概念,可保证您一次只有一个具有特定名称的工作实例。
但是,我不知道如何在此之后链接另一件作品。
val workRequest = OneTimeWorkRequestBuilder<MyWorker>().build()
val operation = workManager.enqueueUniqueWork(UNIQUE_WORK_NAME,ExistingWorkPolicy.REPLACE,workRequest)
// Can't do anything with operation and ensureUniqueWork doesn't take `workContinuation`
使用替代结构时,我无法使用 Unique Work,但这是有效的:
val workRequest = OneTimeWorkRequestBuilder<MyWorker>().build()
var workContinuation = workManager.beginWith(workRequest)
val workRequestTwo = OneTimeWorkRequestBuilder<MyWorkerTwo>().build()
workContinuation = workContinuation.then(work)
workContinuation.enqueue()
解决方法
您可以使用beginUniqueWork
,该函数接受一个顺序工作列表,而不是调用.then
。您有效地为整个链(第三个参数)指定了唯一的作品名称,而不仅仅是单个作品。
val workRequestOne = ...
val workRequestTwo = ...
val workRequests = listOf(workRequestOne,workRequestTwo)
workManager.beginUniqueWork("Unique work name",ExistingWorkPolicy.REPLACE,workRequests).enqueue()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。