Compose 狀態留存

Kimoji:以 Jetpack Compose 實作一款「心情日記」應用 [14]

John Lu
Sep 16, 2022

此系列文章是以我的業餘專案: Kimoji 為範例。
這款以純 Jetpack Compose 撰寫的 side project,已經在 Google Play 上架。 歡迎試玩!
📥 立馬下載 | | | 🎟️ 限免兌換碼

我們的 app 有一個問題:當我們在寫日記時,如果寫下筆記然後開啟深色模式,筆記內容會被清空。只有在 composable 存在於 Composition 裡的時候remember 函式才能正常運作。每次 configuration change 時,整個 Activity 都會 restarted,也因此丟失所有狀態。一旦旋轉螢幕,或是 process death,也會發生同樣的情形。

Configuration change (切換為深色模式) 後筆記內容消失。

我們可以不使用 remember,改用 rememberSaveable。這樣即可儲存狀態,並撐過 configuration changes (如旋轉) 和 process death。

現在,我們把 titleValuenotesValue外面的 remember 替換為 rememberSaveable

現在不論是旋轉畫面、切換為深色模式,或是被系統 kill process。除非我們之前曾經關掉 app,否則筆記內容不會再消失。

Configuration change (切換為深色模式) 後筆記內容不會再消失。

此系列文章是以我的業餘專案: Kimoji 為範例

Kimoji 是一款心情日記 App,讓你用可愛的 emoji 來撰寫你的心情日記。現在就來試試這款設計精美的微日記吧!
📥 立馬下載 | | | 🎟️ 限免兌換碼

--

--

John Lu

Android Developer. Deeply motivated by challenges and tends to be excited by breaking conventional ways of thinking and doing. He builds fun and creative apps.