liveData是一種可觀察的資料持有類別。不同於一般的observable類型,lifeData擁有感知生命週期的特性,意思是他會依附於其他components的生命週期上面,像是activity、fragment或是service,當這些元件處於活躍的生命週期狀態時才會向他們發出資料變化的通知。
1.UI和viewModel的資料保持一致
LiveData是使用觀察者模式,當LIfeCycle的狀態改變,LiveData會通知觀察者,以便更新UI。
2.不需要手動處理生命週期的問題
livedata可以感知UI生命週期的變化。只有在Ui元件處於活躍狀態時LiveData才會通知資料有變化,活躍狀態指的是Started與Resumed。Activity不是在活躍的狀態,例如Activity在背景時,是不會收到LiveData的通知的。
3.避免讓activity在stopped階段發生閃退
LiveData 能夠在元件生命週期結束後自動切斷資料流的推送,防止產生 NullPointException 等例外彈出。
4.避免Memory Leak
LiveData被綁定到LifeCycle的生命周期上,當Activity被銷毀時,觀察者會自動被清除,避免記憶體洩漏的問題。
記憶體洩漏 ( Memory Leak ) 可說是每個 Android 開發者都很常遇到的問題,顧名思義就是指因為疏誤或錯誤導致程式無法釋放不再使用的記憶體。更明確地來說,是指應用程式所分配到的某段記憶體空間在釋放前就失去了控制權,導致該段記憶體無法回收。
5.解決Configuration Change的問題
在螢幕發生旋轉或被回收使得Activity再次啟動時,立刻就能收到最新的數據,不用對資料做儲存再取出的動作,也不用怕資料遺失。
明天會舉一個在案子實作中遇到的問題,以及如何利用viewmodel來解決問題!