此系列文章是以我的業餘專案: 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
:
var titleValue by rememberSaveable { mutableStateOf("") }
var notesValue by rememberSaveable { mutableStateOf("") }
現在不論是旋轉畫面、切換為深色模式,或是被系統 kill process。除非我們之前曾經關掉 app,否則筆記內容不會再消失。
當我們寫下筆記 | 並開啟深色模式 | 筆記內容會留存 |
---|---|---|
此系列文章是以我的業餘專案:Kimoji 為範例。
Kimoji 是一款心情日記 App,讓你用可愛的 emoji 來撰寫你的心情日記。現在就來試試這款設計精美的微日記吧!
立馬下載 限免兌換碼
Reference: https://developer.android.com/codelabs/jetpack-compose-basics