怎么用域名进网站,常州武进区建设局网站,dede无法更新网站主页到,招标代理公司加盟合作概述
应用数据持久化#xff0c;是指应用将内存中的数据通过文件或数据库的形式保存到设备上。内存中的数据形态通常是任意的数据结构或数据对象#xff0c;存储介质上的数据形态可能是文本、数据库、二进制文件等。
HarmonyOS标准系统支持典型的存储数据形态#xff0c;包…概述
应用数据持久化是指应用将内存中的数据通过文件或数据库的形式保存到设备上。内存中的数据形态通常是任意的数据结构或数据对象存储介质上的数据形态可能是文本、数据库、二进制文件等。
HarmonyOS标准系统支持典型的存储数据形态包括用户首选项、键值型数据库、关系型数据库。
开发者可以根据如下功能介绍选择合适的数据形态以满足自己应用数据的持久化需要。
用户首选项Preferences通常用于保存应用的配置信息。数据通过文本的形式保存在设备中应用使用过程中会将文本中的数据全量加载到内存中所以访问速度快、效率高但不适合需要存储大量数据的场景。
键值型数据库KV-Store一种非关系型数据库其数据以“键值”对的形式进行组织、索引和存储其中“键”作为唯一标识符。适合很少数据关系和业务关系的业务数据存储同时因其在分布式场景中降低了解决数据库版本兼容问题的复杂度和数据同步过程中冲突解决的复杂度而被广泛使用。相比于关系型数据库更容易做到跨设备跨版本兼容。
关系型数据库RelationalStore一种关系型数据库以行和列的形式存储数据广泛用于应用中的关系型数据的处理包括一系列的增、删、改、查等接口开发者也可以运行自己定义的SQL语句来满足复杂业务场景的需要。 通过用户首选项实现数据持久化
场景介绍
用户首选项为应用提供Key-Value键值型的数据处理能力支持应用持久化轻量级数据并对其修改和查询。当用户希望有一个全局唯一存储的地方可以采用用户首选项来进行存储。Preferences会将该数据缓存在内存中当用户读取的时候能够快速从内存中获取数据当需要持久化时可以使用flush接口将内存中的数据写入持久化文件中。Preferences会随着存放的数据量越多而导致应用占用的内存越大因此Preferences不适合存放过多的数据适用的场景一般为应用保存用户的个性化设置字体大小是否开启夜间模式等。
运作机制 如图所示用户程序通过ArkTS接口调用用户首选项读写对应的数据文件。开发者可以将用户首选项持久化文件的内容加载到Preferences实例每个文件唯一对应到一个Preferences实例系统会通过静态容器将该实例存储在内存中直到主动从内存中移除该实例或者删除该文件。
应用首选项的持久化文件保存在应用沙箱内部可以通过context获取其路径。 约束限制 Key键为string类型要求非空且长度不超过80个字节。 如果Value值为string类型可以为空不为空时长度不超过8192个字节。 内存会随着存储数据量的增大而增大所以存储的数据量应该是轻量级的建议存储的数据不超过一万条否则会在内存方面产生较大的开销。 接口说明
以下是用户首选项持久化功能的相关接口大部分为异步接口。异步接口均有callback和Promise两种返回形式下均以Promise形式为例 导入模块
import dataPreferences from ohos.data.preferences;dataPreferences.getPreferences
获取Preferences实例使用Promise异步回调。
getPreferences(context: Context, name: string): PromisePreferences参数说明
context:Stage模型的应用Context
name: Preferences实例的名称
返回值
PromisePreferencesPromise对象返回Preferences实例。
示例
import UIAbility from ohos.app.ability.UIAbility;let preferences null;class EntryAbility extends UIAbility {onWindowStageCreate(windowStage) {try {let promise dataPreferences.getPreferences(this.context, mystore);promise.then((object) {preferences object;console.info(Succeeded in getting preferences.);}).catch((err) {console.error(Failed to get preferences. code err.code , message err.message);})} catch(err) {console.error(Failed to get preferences. code err.code , message err.message);}}
}dataPreferences.deletePreferences
从内存中移除指定的Preferences实例使用Promise异步回调。
若Preferences实例有对应的持久化文件则同时删除其持久化文件。
调用该接口后应用不允许再使用该Preferences实例进行数据操作否则会出现数据一致性问题。
deletePreferences(context: Context, name: string): Promisevoid参数说明
context:Stage模型的应用Context
name: Preferences实例的名称
返回值
PromisePreferencesPromise对象返回Preferences实例。
示例
import UIAbility from ohos.app.ability.UIAbility;
class EntryAbility extends UIAbility {onWindowStageCreate(windowStage) {try{let promise dataPreferences.deletePreferences(this.context, mystore);promise.then(() {console.info(Succeeded in deleting preferences.);}).catch((err) {console.error(Failed to delete preferences. code err.code , message err.message);})} catch(err) {console.error(Failed to delete preferences. code err.code , message err.message);}}
}Preferences
存储实例提供获取和修改存储数据的接口。
下列接口都需先使用data_preferences.getPreferences获取到Preferences实例再通过此实例调用对应接口。 get
get(key: string, defValue: ValueType): PromiseValueType获取键对应的值如果值为null或者非默认值类型返回默认数据defValue使用Promise异步回调。
参数说明
key:要获取的存储Key名称不能为空。
defValue: 默认返回值。支持number、string、boolean、Arraynumber、Arraystring、Arrayboolean类型。
返回值
PromisePreferencesPromise对象返回键对应的值
示例
try {let promise preferences.get(startup, default);promise.then((data) {console.info(Succeeded in getting value of startup. Data: data);}).catch((err) {console.error(Failed to get value of startup. code err.code , message err.message);})
} catch(err) {console.error(Failed to get value of startup. code err.code , message err.message);
}put
put(key: string, value: ValueType): Promisevoid将数据写入Preferences实例可通过flush将Preferences实例持久化使用Promise异步回调。
参数说明
key:要修改的存储的Key不能为空。
value: 存储的新值。支持number、string、boolean、Arraynumber、Arraystring、Arrayboolean类型。
返回值
PromisePreferences无返回结果的Promise对象。
示例
try {let promise preferences.put(startup, auto);promise.then(() {console.info(Succeeded in putting value of startup.);}).catch((err) {console.error(Failed to put value of startup. code err.code , message err.message);})
} catch(err) {console.error(Failed to put value of startup. code err.code , message err.message);
}has
has(key: string): Promiseboolean检查Preferences实例是否包含名为给定Key的存储键值对使用Promise异步回调。
参数说明
key:要检查的存储key名称不能为空。
返回值
PromisePreferencesPromise对象。返回Preferences实例是否包含给定key的存储键值对true表示存在false表示不存在。
示例
try {let promise preferences.has(startup);promise.then((val) {if (val) {console.info(The key startup is contained.);} else {console.info(The key startup dose not contain.);}}).catch((err) {console.error(Failed to check the key startup. code err.code , message err.message);})
} catch(err) {console.error(Failed to check the key startup. code err.code , message err.message);
}delete
delete(key: string): Promisevoid从Preferences实例中删除名为给定Key的存储键值对使用Promise异步回调。
参数说明
key: 要删除的存储key名称不能为空。
返回值
PromisePreferences无返回结果的Promise对象。
示例
try {let promise preferences.delete(startup);promise.then(() {console.info(Succeeded in deleting the key startup.);}).catch((err) {console.error(Failed to delete the key startup. code err.code , message err.message);})
} catch(err) {console.error(Failed to delete the key startup. code err.code , message err.message);
}flush
flush(): Promisevoid将当前Preferences实例的数据异步存储到用户首选项的持久化文件中使用Promise异步回调。
参数说明
返回值
PromisePreferences无返回结果的Promise对象。
示例
try {let promise preferences.flush();promise.then(() {console.info(Succeeded in flushing.);}).catch((err) {console.error(Failed to flush. code err.code , message err.message);})
} catch (err) {console.error(Failed to flush. code err.code , message err.message);
}clear
clear(callback: AsyncCallbackvoid): void清除此·Preferences·实例中的所有存储使用·Promise·异步回调。
参数说明
返回值
PromisePreferences无返回结果的Promise对象。
示例
try {let promise preferences.clear();promise.then(() {console.info(Succeeded in clearing.);}).catch((err) {console.error(Failed to clear. code err.code , message err.message);})
} catch(err) {console.error(Failed to clear. code err.code , message err.message);
}