Middle
Hogyan adjuk vissza a WorkManager munkájának eredményét az alkalmazásnak?
sobes.tech MI
Válasz az MI-től
Használhat Observer-t egy LiveData<WorkInfo> vagy LiveData<List<WorkInfo>> objektumon, amelyet a WorkManager-ből szerezhetünk id vagy címke szerint. A WorkInfo-ban található egy outputData mező, amelyben az eredmény tárolva van.
Példa LiveData lekérésére:
// `LiveData` lekérése id szerint
val workInfoByIdLiveData: LiveData<WorkInfo> =
WorkManager.getInstance(context).getWorkInfoByIdLiveData(workId)
// `LiveData` lekérése címke szerint
val workInfoByTagLiveData: LiveData<List<WorkInfo>> =
WorkManager.getInstance(context).getWorkInfosByTagLiveData(tag)
Eredmény figyelésének példája:
// `LiveData<WorkInfo>` figyelése
workInfoByIdLiveData.observe(lifecycleOwner, Observer { workInfo ->
if (workInfo != null && workInfo.state.isFinished) {
val resultData = workInfo.outputData
// Eredmény feldolgozása
}
})
A Worker-en belül az eredményt a Result.success(Data)-val adjuk vissza.
class MyWorker(appContext: Context, workerParams: WorkerParameters):
Worker(appContext, workerParams) {
override fun doWork(): Result {
// Háttérmunka végrehajtása
val outputData = Data.Builder()
.putString("result_key", "Siker!")
.build()
return Result.success(outputData)
}
}