HarmonyOS 鸿蒙Next中应用退出再次启动后,依然能获取上次保存的结果
HarmonyOS 鸿蒙Next中应用退出再次启动后,依然能获取上次保存的结果
应用退出再次启动后,依然能获取上次保存的结果,比如 UserInfo
对象
class UserInfo {
isLogin?: boolean;
loginType?: string;
}
let user: UserInfo = new UserInfo();
user.isLogin = true
preferences不能保存自定义类型,请问如何保存User
对象到应用中,再次打开怎么获取到对象值。
您可以通过PersistentStorage进行持久化存储,具体可以参考文档: PersistentStorage:持久化存储UI状态-管理应用拥有的状态-状态管理(V1)-状态管理-学习ArkTS语言-基础入门 - 华为HarmonyOS开发者
以下是为您写的示例代码:
class UserInfo {
isLogin?: boolean;
loginType?: string;
}
let user: UserInfo = new UserInfo();
user.isLogin = true;
PersistentStorage.persistProp('aProp', JSON.stringify(user));
@Entry
@Component
struct Index {
@State message: string = 'Hello World';
@StorageLink('aProp') aProp: string = '';
build() {
Row() {
Column() {
Text(this.aProp)
.fontSize(50)
.fontWeight(FontWeight.Bold)
.onClick(() => {
let data: UserInfo = JSON.parse(this.aProp);
data.isLogin = !data.isLogin;
AppStorage.setOrCreate('aProp', JSON.stringify(data));
});
}.width('100%')
}.height('100%')
}
}
这边测试时另一个页面可以拿到的,以下为示例代码:
index页面:
import UserInfo from './user'
import { router } from '@kit.ArkUI'
let user:UserInfo = new UserInfo()
user.isLogin = true
PersistentStorage.persistProp('aProp',JSON.stringify(user))
@Entry
@Component
struct Index {
@State message: string = 'Hello World';
@StorageLink('aProp') aProp: string = ''
build() {
Row() {
Column() {
Text(this.aProp)
.fontSize(50)
.fontWeight(FontWeight.Bold)
.onClick(() => {
let data:UserInfo = JSON.parse(this.aProp)
data.isLogin = !data.isLogin
AppStorage.setOrCreate('aProp',JSON.stringify(data));
})
Text('test页面')
.onClick(() => {
router.pushUrl({
url:'pages/test'
})
})
}
.width('100%')
}
.height('100%')
}
}
test页面:
import UserInfo from './user'
import { router } from '@kit.ArkUI';
@Entry
@Component
struct Test {
@State message: string = 'Hello World';
@StorageLink('aProp') aProp: string = ''
build() {
Row() {
Column() {
Text(this.aProp)
.fontSize(50)
.fontWeight(FontWeight.Bold)
.onClick(() => {
let data:UserInfo = JSON.parse(this.aProp)
data.isLogin = !data.isLogin
AppStorage.setOrCreate('aProp',JSON.stringify(data));
})
Text('index页面')
.onClick(() => {
router.pushUrl({
url:'pages/Index'
})
})
}
.width('100%')
}
.height('100%')
}
}
user页:
export default class UserInfo {
isLogin?:boolean ;
loginType?:string;
}
更多关于HarmonyOS 鸿蒙Next中应用退出再次启动后,依然能获取上次保存的结果的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS(鸿蒙Next)中,应用退出后再次启动仍能获取上次保存的结果,这通常是通过持久化存储机制实现的。鸿蒙系统提供了多种数据存储方式,包括轻量级数据存储(Preferences)、分布式数据服务(Distributed Data Service, DDS)、文件存储以及数据库存储等。
-
轻量级数据存储(Preferences):Preferences是一种轻量级的键值对存储方式,适合存储简单的配置信息或用户偏好设置。数据会被持久化保存在设备的本地存储中,即使应用退出或设备重启,数据依然可以被读取。
-
文件存储:开发者可以通过文件系统将数据存储在设备的内部或外部存储中。文件存储适合存储较大或结构化的数据,应用再次启动时可以通过读取文件来获取之前保存的结果。
-
数据库存储:鸿蒙系统支持使用关系型数据库(如SQLite)来存储结构化数据。数据库中的数据会持久化保存,应用再次启动时可以通过查询数据库来获取之前保存的数据。
-
分布式数据服务(DDS):在分布式场景下,鸿蒙系统提供了分布式数据服务,允许应用在多设备间同步和共享数据。数据会被持久化保存在分布式数据库中,应用再次启动时可以从分布式数据库中获取数据。
这些存储机制确保了应用在退出后再次启动时,能够访问到之前保存的数据,从而保持用户操作的连续性和一致性。
在HarmonyOS(鸿蒙)Next中,应用退出后再次启动时依然能够获取上次保存的结果,这是因为数据持久化机制在发挥作用。开发者可以通过以下几种方式实现数据持久化:
- Preferences:轻量级键值对存储,适合存储简单配置或用户偏好。
- Database:使用SQLite数据库存储结构化数据。
- File Storage:通过文件系统存储较大或复杂数据。
- Distributed Data Management:在分布式场景下跨设备同步数据。
具体实现时,开发者应在应用退出前将数据保存到上述持久化存储中,并在应用再次启动时从存储中读取数据,确保用户体验的连贯性。