如何自动取消定期工作(Workmanager)?

问题描述 投票:0回答:1

我需要在符合条件的情况下取消/删除我的工作。我已经读过,有一个方法onStopped()可以重写,但是它是用于简单的[[:Worker而不是CoroutineWorker

我的工人:

class MyJob(appContext: Context, params: WorkerParameters) : CoroutineWorker(appContext, params) { override suspend fun doWork(): Result { val itemId = inputData.getLong("item_id",0) val itemDao = ItemDB.getInstance(applicationContext).itemDao() val itemRepository = ItemRepo(itemsDao) val item = itemRepository.getItemById(itemId) val newValue = item.a + item.b item.a = newValue itemRepository.updateItem(item) if(item.a == item.c){ WorkManager.getInstance(applicationContext).cancelUniqueWork("TEST_WORKER") } return Result.success() } }

编辑:

我的错误,我忘了提及这是一项独特的定期工作。
android kotlin android-workmanager
1个回答
0
投票
您可以尝试通过返回Result.failure()来取消工作;因此您可以根据自己的条件添加它

Result.failure()

现在您需要在活动/片段中聆听工作结果;因为您没有提供代码的这一部分,所以我会做一些假设,并使用生命周期观察模型来监听工作结果

if(item.a == item.c){ //Cancel work return Result.failure() }

© www.soinside.com 2019 - 2024. All rights reserved.