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
John Lu

Written by John Lu

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

No responses yet