HarmonyOS鸿蒙Next中使用AppStorage存储用户数据重启启动就获取不到了
HarmonyOS鸿蒙Next中使用AppStorage存储用户数据重启启动就获取不到了 使用AppStorage存储用户数据应用重启启动就获取不到了,我看到网上说得只能储存2kb的数据对么?
AppStorage需要与PersistentStorage绑定使用:
```typescript
import router from '[@ohos](/user/ohos).router';
PersistentStorage.persistProp('token', '')
[@Entry](/user/Entry)
[@Component](/user/Component)
struct Index {
[@State](/user/State) message: string = '这是登录页';
private title: string = "手机号登录"
private backColor: ResourceColor = "#DC143C"
[@StorageLink](/user/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')
.backgroundColor(this.backColor)
.border({
color:'#CCCCCC',
width:1
})
.margin({
top:500
})
Row(){
Text(this.title)
.fontSize(18)
.fontColor('#333333')
Text('(上次登录)')
.fontSize(14)
.fontColor('#C0C0C0')
}
.width('100%')
.height('100%')
.justifyContent(FlexAlign.Center)
.onClick(() =>{
this.mobilePhoneLoginClick()
})
.margin({
top:500
})
//.backgroundColor('#32CD32')
}
.width('90%')
.height('50')
//backgroundColor('#00BFFF')
}
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.ets页面
[@Entry](/user/Entry)
[@Component](/user/Component)
struct Home {
[@State](/user/State) message: string = '这是首页';
[@State](/user/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%')
}
}
AppStoreage没有大小限制,单条数据[k,v],v也没有限制,但是不建议单条v大于1kb,大于1kb建议使用数据库。多条使用没有限制,会动态分配的。
更多关于HarmonyOS鸿蒙Next中使用AppStorage存储用户数据重启启动就获取不到了的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next中,AppStorage是用于应用内全局状态管理的工具,它基于内存存储,数据在应用进程生命周期内有效。如果应用重启,AppStorage中的数据会被清除,无法持久化存储。因此,重启后无法获取之前存储的数据是正常行为。
如果需要持久化存储用户数据,可以使用鸿蒙提供的其他存储方案,如:
-
Preferences:用于存储键值对数据,适合存储小量、简单的配置或用户偏好数据。数据会持久化存储在设备上,应用重启后仍然可以访问。
-
RDB:关系型数据库,适合存储结构化数据,支持SQL操作,数据持久化存储在设备上。
-
File:通过文件系统进行数据存储,适合存储较大或非结构化的数据,如文本、图片等。
AppStorage适用于临时状态管理,不适合需要持久化的场景。
在HarmonyOS鸿蒙Next中,AppStorage
是用于存储应用全局数据的机制,但其数据在应用重启后不会持久化。如果需要持久化存储用户数据,建议使用Preferences
或Database
等持久化存储方式。Preferences
适合存储简单的键值对数据,而Database
适合存储结构化的复杂数据。这样,即使应用重启,数据仍然可以保留。