Compose 狀態留存
此系列文章是以我的業餘專案: Kimoji 為範例。
這款以純 Jetpack Compose 撰寫的 side project,已經在 Google Play 上架。 歡迎試玩!
📥 立馬下載 | | | 🎟️ 限免兌換碼
我們的 app 有一個問題:當我們在寫日記時,如果寫下筆記然後開啟深色模式,筆記內容會被清空。只有在 composable 存在於 Composition 裡的時候,remember
函式才能正常運作。每次 configuration change 時,整個 Activity
都會 restarted,也因此丟失所有狀態。一旦旋轉螢幕,或是 process death,也會發生同樣的情形。
我們可以不使用 remember
,改用 rememberSaveable
。這樣即可儲存狀態,並撐過 configuration changes (如旋轉) 和 process death。
現在,我們把 titleValue
和 notesValue
外面的 remember
替換為 rememberSaveable
:
現在不論是旋轉畫面、切換為深色模式,或是被系統 kill process。除非我們之前曾經關掉 app,否則筆記內容不會再消失。