第159篇 Compose 状态管理:remember 与状态提升
先把结论放在前面:Compose 的状态管理只有三件工具——remember(重组间缓存)、rememberSaveable(跨配置变更保存)、以及"状态提升"(决定状态放在哪个作用域)。前两件是 API,第三件是架构决策。面试里能答出前两件的人很多,能讲清"状态该放在哪一层、为什么"的很少——深度就在这第三件上。这题之所以"深度才是稀缺品",是因为它的追问会直接落到架构层面:"这个状态为什么放在 ViewModel 而不是 Composable?""跨页面共享的状态放哪?""一次性事件怎么表达?"这三个问题没有标准答案,但有判断依据,能说出依据的人就是深度够的人。三层状态与它们的边界┌─ 应用级:登录态、主题、用户偏好 —— ViewModel(Activity) 或单例 StateFlow ├─ 页面级:列表数据、加载状态 —— ViewModel(Activity/Fragment) ├─ 屏幕级:表单输入、展开收起 —— ViewModel(Fragment) 或 rememberSaveable └─ 组件级:仅此一个 Composable 用到 —— remember / rememberSaveable判断"状态放哪"的四条依据(这是这题的核心):① 需要跨配置变更保留吗?需要 →rememberSaveable或 ViewModel。