:收藏与笔记的轻量持久化)
一、收藏与笔记的轻量持久化的场景约束“收藏与笔记的轻量持久化”要处理的问题是收藏课程和笔记需要跨启动保留。状态边界、资源生命周期和失败路径需要在页面组合之前确定窗口变化、断网、返回页面和重复操作才能沿同一套规则恢复。“收藏与笔记的轻量持久化”不是单一控件问题数据模型、交互状态和异常处理共同决定页面是否稳定。参考 preferences。本次验证从全新安装开始收藏“单打计分规则”再新建标题为“持久化取证20260727”的笔记。保存后强制停止应用并重新启动避免把同一进程内的AppStorage状态误当成持久化结果。二、页面、服务与数据的职责“收藏与笔记的轻量持久化”采用四层分工输入层接收点击、文本和选择领域服务层完成校验、转换和持久化页面状态层订阅明确字段异常层处理空数据、权限、网络、设备能力和资源缺失。页面扩展时只接入对应层不复制已有判断。重启后“我的收藏”仍能回读到“单打计分规则”笔记列表也能回读到保存前的标题和正文个人页同时显示收藏数为 1。三处 UI 回读共同覆盖收藏数组、笔记对象列表和恢复后的聚合状态。层级责任这篇的落点输入层收集点击、筛选、文本或文件选择收藏课程和笔记需要跨启动保留服务层校验参数、读写数据、处理异步结果收藏页、笔记编辑和偏好存储状态层用可观测字段驱动 UI 刷新选中态、加载态、错误态分离验收范围正常输入、空状态、失败与恢复页面状态、结构图与异常结果三、收藏与笔记的轻量持久化的核心实现关键实现聚焦状态从页面进入服务层后的约束输入先归一化状态只经由一个入口更新失败信息保留给页面反馈。static toggle(id: string): boolean { const cur FavoriteService.list() const next cur.indexOf(id) 0 ? cur.filter(item item ! id) : [id, ...cur] AppStorage.setOrCreatestring[](StorageKeys.FAVORITES, next) PreferencesHelper.get().persist(StorageKeys.FAVORITES, next) return next.indexOf(id) 0 }收藏和笔记服务都采用“复制后写回”的方式更新数组再把同一值交给 PreferencesHelper。启动阶段会按当前账号作用域把已保存的 JSON 包装值恢复到 AppStorage因此页面不必保存另一份恢复缓存。“收藏与笔记的轻量持久化”的入口验收检查三项不可用条件是否禁用入口、离开后状态是否复位、失败后是否保留继续操作的路径。失败分支与主流程使用同一套状态回收规则。四、边界条件如何返回页面边界流程决定“收藏与笔记的轻量持久化”是否稳定空数据不能继续渲染详情异步失败要给出下一步操作多窗口或跨设备状态不能只依赖页面局部字段。“收藏与笔记的轻量持久化”的取舍落在边界而非页面数量上临时 UI 状态就近处理共享数据通过稳定接口流动异常结果回到可见的页面反馈。五、收藏与笔记的轻量持久化的验收清单全新安装后收藏“单打计分规则”确认星标立即变为选中状态。新建“持久化取证20260727”笔记并填写正文保存后在列表回读。强制停止com.example.badmintonlearn确认原页面进程结束。重新启动EntryAbility确认目标 bundle 重新进入前台。分别回读收藏列表、笔记列表和个人页聚合数据确认收藏与笔记均跨进程恢复。六、状态模型的最终边界“收藏与笔记的轻量持久化”先把状态归属和失败出口落实再讨论页面扩展。这样每个新增入口都能复用已有数据流而不是再堆一组字段。