Middle
Como devolver o resultado do trabalho do WorkManager para a aplicação?
sobes.tech IA
Resposta da IA
Pode usar Observer num objeto LiveData<WorkInfo> ou LiveData<List<WorkInfo>>, obtido do WorkManager por id ou por tag. No WorkInfo, há um campo outputData que contém o resultado.
Exemplo de obtenção de LiveData:
// Obter LiveData por id
val workInfoByIdLiveData: LiveData<WorkInfo> =
WorkManager.getInstance(context).getWorkInfoByIdLiveData(workId)
// Obter LiveData por tag
val workInfoByTagLiveData: LiveData<List<WorkInfo>> =
WorkManager.getInstance(context).getWorkInfosByTagLiveData(tag)
Exemplo de observação do resultado:
// Observar `LiveData<WorkInfo>`
workInfoByIdLiveData.observe(lifecycleOwner, Observer { workInfo ->
if (workInfo != null && workInfo.state.isFinished) {
val resultData = workInfo.outputData
// Processar o resultado de resultData
}
})
Dentro do Worker, o resultado é devolvido usando Result.success(Data).
class MyWorker(appContext: Context, workerParams: WorkerParameters):
Worker(appContext, workerParams) {
override fun doWork(): Result {
// Executar trabalho em segundo plano
val outputData = Data.Builder()
.putString("result_key", "Sucesso!")
.build()
return Result.success(outputData)
}
}