我有一個使用 WorkManager 在后臺運行的操作,用于從手機獲取資料,并將其發送到遠程服務器。但是,每當用戶碰巧進入該活動時,我還需要在特定活動視圖中顯示該資料。我有沒有辦法將 Worker 類與特定的 Activity 鏈接并執行一些 UI 更改功能?(更改文本視圖等)
class myWorker(appContext: Context, workerParams: WorkerParameters): CoroutineWorker(appContext, workerParams) {
private val ctx = appContext
override suspend fun doWork(): Result {
// Do the work here
withContext(Main){
//I need to be able to get data and send to server, as well as change the UI display value on a particular activity if the user happens to be on that activity.
}
// Indicate whether the work finished successfully with the Result
return Result.success()
}
uj5u.com熱心網友回復:
我建議使用LiveData。LiveData 是一個可觀察的資料類,它也是生命周期感知的。因此,您的應用程式組件只會在它們處于活動狀態時更新。
基本步驟是:
- 如果您還沒有ViewModel類,請創建一個并添加一個
LiveData包含您想要保留的任何資料的欄位。(請參閱 LiveData 概述中的注釋,了解為什么這是一個好主意。) - 在您的
doWork函式中根據需要更新 LiveData 物件。您可能希望在 ViewModel 中創建函式來對資料執行操作。 - 在您的活動中呼叫
observeLiveData 物件并根據需要更新 UI。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/448907.html
下一篇:完成處理程式中捕獲的值未發生變化
