条件失败时无法停止 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()
对象,并没有对其进行任何操作。
我正在使用 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()
对象,并没有对其进行任何操作。