网站中的二维码设计,二手书屋网站开发的意义,社区电商平台怎么做,简述网站开发的几个步骤鸿蒙通过用户首选项实现数据持久化
1.1 场景介绍
用户首选项为应用提供Key-Value键值型的数据处理能力#xff0c;支持应用持久化轻量级数据#xff0c;并对其修改和查询。当用户希望有一个全局唯一存储的地方#xff0c;可以采用用户首选项来进行存储。Preferences会将该…鸿蒙通过用户首选项实现数据持久化
1.1 场景介绍
用户首选项为应用提供Key-Value键值型的数据处理能力支持应用持久化轻量级数据并对其修改和查询。当用户希望有一个全局唯一存储的地方可以采用用户首选项来进行存储。Preferences会将该数据缓存在内存中当用户读取的时候能够快速从内存中获取数据当需要持久化时可以使用flush接口将内存中的数据写入持久化文件中。Preferences会随着存放的数据量越多而导致应用占用的内存越大因此Preferences不适合存放过多的数据也不支持通过配置加密适用的场景一般为应用保存用户的个性化设置字体大小是否开启夜间模式等。
2.1 运作机制
用户首选项为应用提供Key-Value键值型的数据处理能力支持应用持久化轻量级数据并对其修改和查询。当用户希望有一个全局唯一存储的地方可以采用用户首选项来进行存储。Preferences会将该数据缓存在内存中当用户读取的时候能够快速从内存中获取数据当需要持久化时可以使用flush接口将内存中的数据写入持久化文件中。Preferences会随着存放的数据量越多而导致应用占用的内存越大因此Preferences不适合存放过多的数据也不支持通过配置加密适用的场景一般为应用保存用户的个性化设置字体大小是否开启夜间模式等。
每个key的value的长度最大为8kb创建首选项-仓库的概念-应用可以有N个仓库一个仓库中可以有N个key 3.1 接口说明
接口名称及方法签名描述参数同步/异步类型约束条件getPreferencesSync(context: Context, options: Options): Preferences获取 Preferences 实例context: 上下文对象options: 配置选项同步存在对应的异步接口putSync(key: string, value: ValueType): void写入键值对需调用 flush 持久化存储key: 键名value: 值需满足 ValueType 类型要求同步存在异步接口hasSync(key: string): boolean检查是否包含指定键的键值对key: 键名同步- 键名不能为空- 存在异步接口getSync(key: string, defValue: ValueType): ValueType获取键对应的值若为空或类型不匹配则返回 defValuekey: 键名defValue: 默认值同步存在异步接口deleteSync(key: string): void删除指定键的键值对key: 键名同步存在异步接口flush(callback: AsyncCallbackvoid): void将数据异步持久化到文件callback: 异步回调异步-on(type: change, callback: Callbackstring): void订阅数据变更事件在 flush 后触发type: 事件类型仅支持 changecallback: 回调函数参数为变更的 key--off(type: change, callback?: Callbackstring): void取消订阅数据变更事件type: 事件类型changecallback: 可选回调函数-若未指定 callback 则取消全部订阅deletePreferences(context: Context, options: Options, callback: AsyncCallbackvoid): void从内存移除实例并删除持久化文件若有context: 上下文对象options: 配置选项callback: 异步回调异步-
4.1 开发步骤
1.导入kit.ArkData模块。
import { preferences } from kit.ArkData;2.获取preference实例拿到仓库
getPreferenceSync接受两个参数其中一个参数是context,另一个参数是options context代表了用户的上下文是ability的能力级也是ability的一个环境这个东西如果想要获取分两种情况 在ability中区获取 在onWindowStageCreate写入这行代码即可 MyPreferenceClass.context this.context在UI界面去拿 getContext(this)options 是传递给 preferences.getPreferencesSync() 的配置对象用于定义存储实例的仓库名称、安全模式等关键属性 const store preferences.getPreferencesSync(MyPreferenceClass.context||getContext(),{//拿到该名称的仓库拿不到就会给你创建该名称的仓库类似数据库name:infoStore})return store3.创建增删改的方法 //2.写入字段持久化存储static async putStore(info:string){const store MyPreferenceClass.getStore()store.putSync(info,info)await store.flush()}//3.获取数据static getValue(){const store MyPreferenceClass.getStore()const value store.getSync(info,666666)return value}//4.删除数据static async deleteValue(){const store MyPreferenceClass.getStore()//如果不加上flush操作只是在内存中删除需要加上flush操作才能写入磁盘store.deleteSync(info)await store.flush()}//5.判断数据是否存在static judjeValue(val:string){const store MyPreferenceClass.getStore()const value store.hasSync(val)return value}4.测试代码
import { MyPreferenceClass } from ./utils/MyPreferenceClassEntry
Component
struct Mytest {// State 实时更新State currentValue: string 今天天气真不错State JudeValue: boolean falsebuild() {//初始化默认值Column({ space: 10 }) {Text(this.currentValue)Text(this.JudeValue )Button(写入数据).onClick(() {MyPreferenceClass.putStore(今天天气并不好)})Button(展示数据).onClick(() {this.currentValue MyPreferenceClass.getValue() as string})Button(删除数据).onClick(() {MyPreferenceClass.deleteValue()})Button(是否展示该数据).onClick(() {this.JudeValue MyPreferenceClass.judjeValue(info)})}.height(100%).width(100%)}