条件失败时无法停止 CoroutineWorker

Unable to stop CoroutineWorker when condition fails

我正在使用 CoroutineWorker 进行后台任务。这是代码片段

class SimpleWorker(context: Context) : CoroutineWorker(context, workerParams) {
     override suspend fun doWork(): Result = coroutineScope{
         //obtain settings info saved as local file
         val settingsInfo = obtainSettings(context) 

         if(null == settingsInfo) {
            Result.failure()
         }

         Log.i(TAG, "Valid settings found, proceed")
         val isUploadEnabled = settingsInfo.isUploadEnabled //error when settingInfo is null
      }
}

如果设置为空,我希望工作人员发送失败信号并停止 运行 其余代码。相反,它继续并进一步分解。 Result.failure() 是不是没有做它应该做的事,还是我错过了什么?

您必须使用 Result.failure() 对象实际调用 return

if(null == settingsInfo) {
    return@coroutineScope Result.failure()
}

否则,您只是在创建一个 Result.failure() 对象,并没有对其进行任何操作。