學會了ViewModel,接下來就是建立觀察 LiveData。
LiveData
是一個 observable data holder class 類別。
LiveData 僅在數據更改時才提供更新,並且僅向活動的觀察者提供更新,並配合觀察者的生命週期。
建議是配合ViewModel一起使用。
LiveData優點:
1.確保您的 UI 與您的數據狀態匹配 (LiveDataObserver在底層數據發生變化時通知 對象)
2.沒有內存洩漏 (觀察者綁定到 Lifecycle對象並在其關聯的生命週期)
3.不會因活動停止而崩潰(觀察者的生命週期處於非活動狀態,不會收到任何 LiveData 事件)
4.不再需要手動生命週期處理(LiveData 會自動管理)
5.始終保持最新數據(生命週期改變會在再次接收最新數據)
6.正確的配置更改(例如設備旋轉)
7.共享資源(使用單例模式擴展對象來包裝系統服務)
開始動手吧
在App build.gradle,加元件庫
dependencies {
implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1"
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1"
}
在ViewModel中,建立LiveData
// Create a LiveData with a Type
var mTitle = MutableLiveData<String>()
在Activity中,Observe LiveDtat
viewModel.mTitle.observe(owner:this){ it:String
dayTitle.text = it
}
在ViewModel中,LiveData更新
mTitle.postValue("Kotlin Android 第17天,從 0 到 ML -- LiveData")
** 可使用setValue(T) 和 postValue(T).
** setValue(T)是執行在 Main Thread (UI)
** postValue(T) 是執行在 Worker Thread (Backgroud)
範例:
Activity 原本顯示"Kotlin Android 30天,從 0 到 ML" ,LiveData Delay 1s ,
更新"Kotlin Android 第17天,從 0 到 ML -- LiveData",Activity收到更新文字就更新顯示內容
執行結果:
https://developer.android.com/topic/libraries/architecture/livedata