跨旋转使用 rememberSaveable
在配置变化期间保留状态。
跨旋转使用 rememberSaveable 是 CoddyKit 上的免费 Jetpack Compose Academy 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Jetpack Compose Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Jetpack Compose Academy 课程共包含 4 节课。
旋转屏幕的问题
旋转屏幕后,点击计数器会突然回到零。这是因为配置变化会重新创建整个 Activity。
remember 还不够
remember 能跨越重组保存状态,但无法跨越 Activity 的重新创建。当 Activity 重启时,记住的状态就会永久消失。
什么会触发重新创建
旋转屏幕、切换语言和切换深色模式都属于配置变化。每次变化都会拆除并从头构建您的界面。
认识 rememberSaveable
rememberSaveable 的工作方式类似于 remember,但还会将值保存到已保存的实例状态中,因此能够在重新创建后保留。
var count by rememberSaveable { mutableStateOf(0) }只需替换调用
通常只需改动一个词即可修复:将 remember 替换为 rememberSaveable,计数器就能在旋转屏幕后保留数值。
哪些内容可以保存
它开箱即用地保存适合放入 Bundle 的类型:Int、String、Boolean 以及其他基本类型。大多数简单状态都能直接使用。
var name by rememberSaveable { mutableStateOf("") }自定义类型需要 Saver
对于您自己的类,请为 rememberSaveable 提供一个 Saver,告诉它如何将对象存储并恢复为适合放入 Bundle 的数据。
数据类也很简单
对于 Kotlin 数据类,您可以使用 mapSaver 或 listSaver 辅助工具,也可以使用 Parcelize 注解,让保存变得简单。
@Parcelize
data class User(val name: String) : Parcelable它并非永久保存
rememberSaveable 能在旋转屏幕和短暂转入后台时保留状态,但不能在整个应用被终止后保留。要保存永久数据,您仍然需要存储。
什么时候该使用它
对于希望在旋转屏幕后保留的临时界面状态,请使用 rememberSaveable,例如计数器、已输入的查询或标签页索引。
remember 与 Saveable 的区别
经验法则是:对于开销很小或可以重新计算的值,使用 remember;如果旋转屏幕后丢失值会让用户感到不便,则使用 rememberSaveable。
快速检查
哪个 API 可以让状态在屏幕旋转后保留?
回顾
您已经学会了,rememberSaveable 可以让临时界面状态在旋转屏幕和配置变化期间保持,而 remember 不行。做得不错!🎉
用 AI 导师学习 Kotlin — 免费
在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。
- 课程
- 30
- 课程
- 120
常见问题解答
「跨旋转使用 rememberSaveable」课时是免费的吗?
是的 — 「跨旋转使用 rememberSaveable」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Jetpack Compose Academy 课程的其余内容,请升级到 CoddyKit PRO。 Jetpack Compose Academy 课程共包含 4 节课。
「跨旋转使用 rememberSaveable」这节课中我会学到什么?
在配置变化期间保留状态。 你通过在浏览器中直接运行的动手代码来练习 Jetpack Compose Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Jetpack Compose Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Jetpack Compose Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。
「跨旋转使用 rememberSaveable」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Jetpack Compose Academy 课中编写并运行代码吗?
能。每节 Jetpack Compose Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- remember 与 mutableStateOf
- 重新组合:什么会触发重绘
- 构建点击计数器
- 跨旋转使用 rememberSaveable