HarmonyOS 鸿蒙Next PersistentStorage存储问题

发布于 1周前 作者 htzhanglong 来自 鸿蒙OS

HarmonyOS 鸿蒙Next PersistentStorage存储问题

  1. //持久化存储登录状态
PersistentStorage.persistProp(Constant.loginStatus, false)
  1. 登录成功, 保存登录状态
AppStorage.setOrCreate(Constant.loginStatus, true)
  1. 杀掉App

  2. 重新启动App, AppStorage中保存的登录状态会丢失(偶现)

2 回复

你看看你这边步骤是不是有问题,我这边正常

import router from '@ohos.router';

PersistentStorage.persistProp('token', '')

@Entry
@Component
struct Index {
  @State message: string = '这是登录页';
  @StorageLink('token') token: string = ''

  onPageShow() {
    if (this.token.length > 0 && this.token !== "undefined") {
      console.log('登录页 onPageShow token有值 说明之前 有登录过 直接跳转到首页' + this.token)
      this.goToHome()
    } else {
      console.log('登录页 onPageShow token没值 说明之前 没登录过')
    }
  }

  build() {
    Stack() {
      Text(this.message + this.token).fontSize(50).fontWeight(FontWeight.Bold).margin({ top: 200 })
      Button()
        .type(ButtonType.Capsule)
        .width('100%')
        .height('50')
        .border({ color: '#CCCCCC', width: 1 })
        .margin({ top: 500 })
      Row() {
        Text("手机号登录").fontSize(18).fontColor('#333333')
        Text('(上次登录)').fontSize(14).fontColor('#C0C0C0')
      }
      .width('100%')
      .height('100%')
      .justifyContent(FlexAlign.Center)
      .onClick(() => {
        this.mobilePhoneLoginClick()
      })
      .margin({
        top: 500
      })
    }
    .width('100%')
    .height('50')
  }

  mobilePhoneLoginClick() {
    console.info('手机号登录 点击')
    this.loginSuccess()
  }

  loginSuccess() {
    let token = 'abc123456'
    console.info('登录成功 存本地的 token:' + token)
    AppStorage.setOrCreate('token', token)
    this.goToHome()
  }

  goToHome() {
    console.info('跳转到 首页')
    router.pushUrl({ url: 'pages/Home' })
  }
}

// 跳转Home页
@Entry
@Component
struct Home {
  @State message: string = '这是首页';
  @State token: string = ''

  onPageShow() {
    this.token = AppStorage.get('token') + ''
    console.info('首页 取存在本地的 temp:' + this.token)
  }

  build() {
    Row() {
      Column() {
        Text(this.message + this.token).fontSize(50).fontWeight(FontWeight.Bold)
      }.width('100%')
    }.height('100%')
  }
}

参考:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-persiststorage-V5#%E4%BD%BF%E7%94%A8%E5%9C%BA%E6%99%AF

更多关于HarmonyOS 鸿蒙Next PersistentStorage存储问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


针对HarmonyOS(鸿蒙)Next PersistentStorage存储问题,以下是一些可能的解决方案和考虑因素:

HarmonyOS的PersistentStorage提供了持久化存储的能力,如果在使用过程中遇到问题,首先确认以下几点:

  1. 权限检查:确保应用已经正确申请并获得了存储相关的权限。鸿蒙系统对于应用访问存储有严格的管理机制,未授权的应用可能无法正常访问PersistentStorage。

  2. 存储路径:检查存储路径是否正确。错误的路径可能导致数据无法正确读写。确认存储位置符合鸿蒙系统的存储规范。

  3. 数据格式:确保存储和读取的数据格式一致。如果存储时采用了某种序列化方式,读取时也必须采用相同的方式,否则可能导致数据解析错误。

  4. 存储大小:检查存储的数据量是否超过了PersistentStorage的限制。鸿蒙系统可能对单个存储项的大小有限制,超出限制的数据可能无法正常存储。

  5. 系统更新:确认鸿蒙系统版本是否为最新,因为存储相关的bug可能在新版本中已经被修复。

  6. 日志分析:查看系统日志,分析是否有与PersistentStorage相关的错误信息,这有助于定位问题。

如果以上方法均未能解决问题,可能是系统或硬件层面的异常。此时,建议联系鸿蒙系统的官方客服以获取更专业的支持。官网客服地址是:https://www.itying.com/category-93-b0.html

回到顶部