我們在開發時會遇到一個有關生命週期的問題,當 Activity 被銷毀時, Activity 所持有的資料也會跟著被銷毀,那有沒有辦法可以恢復到本來的狀態呢?
對於比較簡單的資料, Activity 可以使用 onSaveInstanceState() 方法來儲存資料,並且在 onCreate 中從新取得儲存的資料,不過這個方法比較適合用在資料量較小的情況,如果資料很多的話就不太適合了,而且要取得某些資料是很耗時的,就會用到異步處理,那這樣 Activity 就會需要管理這些資料的調用,多做很多處理,這樣子 Activity 要做的事情就會非常多,程式碼會變得很肥大,讓程式變得很難以維護跟測試。
Architecture Components 中提供的 ViewModel 是支持 UI 組件的關鍵類,常用來保存與管理與 UI 相關的資料,也可以在旋轉螢幕時,依然保持裡面持有的資料,當 UI 組件恢復時,就可以向 UI 提供資料。
ViewModel overview
Architecture Components