#android #kotlin #kotlin-coroutines #android-workmanager
#Android #kotlin #kotlin-сопрограммы #android-workmanager
Вопрос:
Я использую 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()
Не выполняет то, что он должен делать, или я что-то пропустил?
Ответ №1:
Вы должны фактически вызвать return
Result.failure()
объект:
if(null == settingsInfo) {
return@coroutineScope Result.failure()
}
В противном случае вы просто создаете Result.failure()
объект и ничего с ним не делаете.