已开启
feat(app): 登录态持久化(Preferences)+ 冷启动恢复首屏 (#3) #5
feat(app): 登录态持久化(Preferences)+ 冷启动恢复首屏 (#3) #5
已开启
雅皮士创建于 9 天前
雅皮士
雅皮士
9 天前

变更说明

修复 Issue #3 的登录态不持久化部分(时区部分由 PR #3 处理)。

原实现把用户信息存在 LocalStorage.getShared(),这是 windowStage 级内存,App 进程重启即丢失,每次冷启动都需重新登录。

变更内容(仅 EntryAbility.ets)

  1. 使用 @kit.ArkData 的 preferences 将用户信息持久化到本地(键 currentUser,库名 word_user_store);
  2. 保留静态内存缓存,使既有的同步 API 签名不变,页面调用点(Login/Home/Flashcard/Quiz)无需改动:
    • getUserInfo() / getUserId() → 读缓存
    • setUserInfo() / clearUserInfo() → 更新缓存并异步落盘
  3. onWindowStageCreate 先 await 恢复持久化会话,再按登录态选择首屏:
    • 已登录 → pages/Home
    • 未登录 → pages/Login

验证

说明:验证环境 SDK 为 HarmonyOS 26.0.0,为适配当前 IDE 临时移除了 build-profile.json5 的 compileSdkVersion(24)字段进行编译;该临时改动未包含在本 PR,工程原配置保持不变。所用 preferences API 在 API 24 同样可用。

影响范围

  • 仅修改 harmony_app/entry/src/main/ets/entryability/EntryAbility.ets
  • 不改变任何页面 UI 与业务逻辑

Refs #3

likedislike
合并受阻
雅皮士雅皮士
9 天前 关联了issue:[Bug][P1] 登录态不持久化 + UTC 时区导致连续打卡数据错乱