Назад к вопросам
Middle
417
questionbank
Как вернуть результат работы WorkManager в приложение?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Можно использовать Observer на объекте LiveData<WorkInfo> или LiveData<List<WorkInfo>>, полученном из WorkManager по id или тегу. В WorkInfo содержится поле outputData, в котором хранится результат.
Пример получения LiveData:
// Получение LiveData по id
val workInfoByIdLiveData: LiveData<WorkInfo> =
WorkManager.getInstance(context).getWorkInfoByIdLiveData(workId)
// Получение LiveData по тегу
val workInfoByTagLiveData: LiveData<List<WorkInfo>> =
WorkManager.getInstance(context).getWorkInfosByTagLiveData(tag)
Пример наблюдения за результатом:
// Наблюдение за LiveData<WorkInfo>
workInfoByIdLiveData.observe(lifecycleOwner, Observer { workInfo ->
if (workInfo != null && workInfo.state.isFinished) {
val resultData = workInfo.outputData
// Обработка результата из resultData
}
})
Внутри Worker результат возвращается с помощью Result.success(Data).
class MyWorker(appContext: Context, workerParams: WorkerParameters):
Worker(appContext, workerParams) {
override fun doWork(): Result {
// Выполнение фоновой работы
val outputData = Data.Builder()
.putString("result_key", "Успех!")
.build()
return Result.success(outputData)
}
}