【问题标题】:Unable to stop CoroutineWorker when condition fails条件失败时无法停止 CoroutineWorker
【发布时间】:2020-10-22 07:54:37
【问题描述】:

我将CoroutineWorker 用于后台任务。这是代码sn-p

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() 是没有做它应该做的事情还是我错过了什么?

【问题讨论】:

    标签: android kotlin kotlin-coroutines android-workmanager


    【解决方案1】:

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

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

    否则,您只是创建了一个 Result.failure() 对象,而没有对它做任何事情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-13
      • 1970-01-01
      • 1970-01-01
      • 2021-12-03
      • 1970-01-01
      • 2017-03-29
      • 2013-03-27
      • 1970-01-01
      相关资源
      最近更新 更多