iT邦幫忙

2022 iThome 鐵人賽

DAY 12
0

我們在開發時會遇到一個有關生命週期的問題,當 Activity 被銷毀時, Activity 所持有的資料也會跟著被銷毀,那有沒有辦法可以恢復到本來的狀態呢?

對於比較簡單的資料, Activity 可以使用 onSaveInstanceState() 方法來儲存資料,並且在 onCreate 中從新取得儲存的資料,不過這個方法比較適合用在資料量較小的情況,如果資料很多的話就不太適合了,而且要取得某些資料是很耗時的,就會用到異步處理,那這樣 Activity 就會需要管理這些資料的調用,多做很多處理,這樣子 Activity 要做的事情就會非常多,程式碼會變得很肥大,讓程式變得很難以維護跟測試。

Architecture Components 中提供的 ViewModel 是支持 UI 組件的關鍵類,常用來保存與管理與 UI 相關的資料,也可以在旋轉螢幕時,依然保持裡面持有的資料,當 UI 組件恢復時,就可以向 UI 提供資料。
https://ithelp.ithome.com.tw/upload/images/20220918/20151953Lwf9Sm4RGF.png

ViewModel 的生命週期

https://ithelp.ithome.com.tw/upload/images/20220918/20151953D6wP6DsS3W.png

參考資料

ViewModel overview
Architecture Components


上一篇
第十一天:Android Architecture Components 之 LiveData
下一篇
第十三天:Android Architecture Components 之 Room
系列文
轉職成 Android Developer 的最後一哩路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言