照片做视频的软件 模板下载网站好,深圳建设行业网站,输入搜索内容,网站开发费用预算状态管理模块提供了应用程序的数据存储能力、持久化数据管理能力、UIAbility数据存储能力和应用程序需要的环境状态。
说明
本模块首批接口从API version 7开始支持#xff0c;后续版本的新增接口#xff0c;采用上角标单独标记接口的起始版本。
本文中T和S的含义如下后续版本的新增接口采用上角标单独标记接口的起始版本。
本文中T和S的含义如下 类型 描述 T Classnumberbooleanstring和这些类型的数组形式。 S numberbooleanstring。
AppStorage
Link
static Link(propName: string): any
与AppStorage中对应的propName建立双向数据绑定。如果给定的propName在AppStorage中存在返回与AppStorage中propName对应属性的双向绑定数据。
双向绑定数据的修改会同步回AppStorage中AppStorage会将变化同步到所有绑定该propName的数据和自定义组件中。
如果AppStorage中不存在propName则返回undefined。
参数 参数名 类型 必填 参数描述 propName string 是 AppStorage中的属性名。
返回值 类型 描述 any 返回双向绑定的数据如果AppStorage不存在对应的propName则返回undefined。
AppStorage.SetOrCreate(PropA, 47);
let linkToPropA1 AppStorage.Link(PropA);
let linkToPropA2 AppStorage.Link(PropA); // linkToPropA2.get() 47
linkToPropA1.set(48); // 双向同步: linkToPropA1.get() linkToPropA2.get() 48
SetAndLink
static SetAndLinkT(propName: string, defaultValue: T): SubscribedAbstractPropertyT
与Link接口类似如果给定的propName在AppStorage中存在则返回该propName对应的属性的双向绑定数据。如果不存在则使用defaultValue在AppStorage创建和初始化propName返回其双向绑定数据。
参数 参数名 类型 必填 参数描述 propName string 是 AppStorage中的属性名。 defaultValue T 是 当propName在AppStorage中不存在使用defaultValue在AppStorage中初始化对应的propName。
返回值 类型 描述 SubscribedAbstractPropertyT SubscribedAbstractPropertyT的实例和AppStorage中propName对应属性的双向绑定的数据。
AppStorage.SetOrCreate(PropA, 47);
let link1: SubscribedAbstractPropertynumber AppStorage.SetAndLink(PropB, 49); // Create PropB 49
let link2: SubscribedAbstractPropertynumber AppStorage.SetAndLink(PropA, 50); // PropA exists, remains 47
Prop
static Prop(propName: string): any
与AppStorage中对应的propName建立单向属性绑定。如果给定的propName在AppStorage中存在则返回与AppStorage中propName对应属性的单向绑定数据。如果AppStorage中不存在propName则返回undefined。单向绑定数据的修改不会被同步回AppStorage中。
参数 参数名 类型 必填 参数描述 propName string 是 AppStorage中的属性名。
返回值 类型 描述 any 返回单向绑定的数据如果AppStorage不存在对应的propName则返回undefined。
AppStorage.SetOrCreate(PropA, 47);
let prop1 AppStorage.Prop(PropA);
let prop2 AppStorage.Prop(PropA);
prop1.set(1); // one-way sync: prop1.get()1; but prop2.get() 47
SetAndProp
static SetAndPropS(propName: string, defaultValue: S): SubscribedAbstractPropertyS
与Prop接口类似。如果给定的propName在AppStorage存在则返回该propName对应的属性的单向绑定数据。如果不存在则使用defaultValue在AppStorage创建和初始化propName对应的属性返回其单向绑定数据。
参数 参数名 类型 必填 参数描述 propName string 是 AppStorage中的属性名。 defaultValue S 是 当propName在AppStorage中不存在时使用default在AppStorage中初始化对应的propName。
返回值 类型 描述 SubscribedAbstractPropertyS SubscribedAbstractPropertyS的实例。
AppStorage.SetOrCreate(PropA, 47);
let prop: SubscribedAbstractPropertynumber AppStorage.SetAndProp(PropB, 49); // PropA - 47, PropB - 49
Has
static Has(propName: string): boolean
判断propName对应的属性是否在AppStorage中存在。
参数 参数名 类型 必填 参数描述 propName string 是 AppStorage中的属性名。
返回值 类型 描述 boolean 如果propName对应的属性在AppStorage中存在则返回true。不存在则返回false。
AppStorage.Has(simpleProp);
Get
static GetT(propName: string): T | undefined
获取propName在AppStorage中对应的属性。如果不存在返回undefined。
参数 参数名 类型 必填 参数描述 propName string 是 AppStorage中的属性名。
返回值 类型 描述 T | undefined AppStorage中propName对应的属性如果不存在返回undefined。
AppStorage.SetOrCreate(PropA, 47);
let value: number AppStorage.Get(PropA); // 47
Set
static SetT(propName: string, newValue: T): boolean
在AppStorage中设置propName对应属性的值。如果newValue的值和propName对应属性的值相同即不需要做赋值操作状态变量不会通知UI刷新propName对应属性的值。
参数 参数名 类型 必填 参数描述 propName string 是 AppStorage中的属性名。 newValue T 是 属性值不能为undefined或null。
返回值 类型 描述 boolean 如果AppStorage不存在propName对应的属性或者设置的newValue是undefined或者null返回false。设置成功则返回true。
AppStorage.SetOrCreate(PropA, 48);
let res: boolean AppStorage.Set(PropA, 47) // true
let res1: boolean AppStorage.Set(PropB, 47) // false
SetOrCreate
static SetOrCreateT(propName: string, newValue: T): void
如果propName已经在AppStorage中存在并且newValue和propName对应属性的值不同则设置propName对应属性的值为newValue否则状态变量不会通知UI刷新propName对应属性的值。
如果propName不存在则创建propName属性值为newValue。setOrCreate只可以创建单个AppStorage的键值对如果想创建多个AppStorage键值对可以多次调用此方法。 参数 参数名 类型 必填 参数描述 propName string 是 AppStorage中的属性名。 newValue T 是 属性值不能为undefined或null。
AppStorage.SetOrCreate(simpleProp, 121);
Delete
static Delete(propName: string): boolean
在AppStorage中删除propName对应的属性。
在AppStorage中删除该属性的前提是必须保证该属性没有订阅者。如果有订阅者则返回false。删除成功返回true。
属性的订阅者为Link、Prop等接口绑定的propName以及StorageLink(propName)和StorageProp(propName)。这就意味着如果自定义组件中使用StorageLink(propName)和StorageProp(propName)或者SubscribedAbstractProperty实例依旧对propName有同步关系则该属性不能从AppStorage中删除。
参数 参数名 类型 必填 参数描述 propName string 是 AppStorage中的属性名。
返回值 类型 描述 boolean 如果AppStorage中有对应的属性且该属性已经没有订阅者则删除成功返回true。如果属性不存在或者该属性还存在订阅者则返回false。
AppStorage.SetOrCreate(PropA, 47);
AppStorage.Link(PropA);
let res: boolean AppStorage.Delete(PropA); // false, PropA still has a subscriberAppStorage.SetOrCreate(PropB, 48);
let res1: boolean AppStorage.Delete(PropB); // true, PropB is deleted from AppStorage successfully
Keys
static Keys(): IterableIteratorstring
返回AppStorage中所有的属性名。
返回值 类型 描述 IterableIteratorstring AppStorage中所有的属性名。
AppStorage.SetOrCreate(PropB, 48);
let keys: IterableIteratorstring AppStorage.Keys()
staticClear
static staticClear(): boolean
删除所有的属性。
从API version 9开始废弃推荐使用Clear9。
返回值 类型 描述 boolean 删除所有的属性如果当前有状态变量依旧引用此属性返回false。
let simple AppStorage.staticClear();
Clear9
static Clear(): boolean
清除AppStorage的所有的属性。在AppStorage中清除所有属性的前提是已经没有任何订阅者。如果有则什么都不做返回false删除成功返回true。
订阅者的含义和参考Delete。
返回值 类型 描述 boolean 如果AppStorage中的属性已经没有订阅者则清除成功返回true。否则返回false。
AppStorage.SetOrCreate(PropA, 47);
let res: boolean AppStorage.Clear(); // true, there are no subscribers
IsMutable
static IsMutable(propName: string): boolean
返回AppStorage中propName对应的属性是否是可变的。
参数 参数名 类型 必填 参数描述 propName string 是 AppStorage中的属性名。
返回值 类型 描述 boolean 返回AppStorage中propNam对应的属性是否是可变的。
AppStorage.SetOrCreate(PropA, 47);
let res: boolean AppStorage.IsMutable(simpleProp);
Size
static Size(): number
返回AppStorage中的属性数量。
返回值 类型 描述 number 返回AppStorage中属性的数量。
AppStorage.SetOrCreate(PropB, 48);
let res: number AppStorage.Size(); // 1
LocalStorage9
constructor9
constructor(initializingProperties?: Object)
创建一个新的LocalStorage实例。使用Object.keys(initializingProperties)返回的属性和其数值初始化LocalStorage实例。
从API version 9开始该接口支持在ArkTS卡片中使用。
参数 参数名 类型 必填 参数描述 initializingProperties Object 否 用initializingProperties包含的属性和数值初始化LocalStorage。initializingProperties不能为undefined。
let storage: LocalStorage new LocalStorage({ PropA: 47 });
GetShared9
static GetShared(): LocalStorage
获取当前stage共享的LocalStorage实例。使用案例可参考将LocalStorage实例从UIAbility共享到一个或多个视图。
从API version 9开始该接口支持在ArkTS卡片中使用。
模型约束此接口仅可在Stage模型下使用。
返回值 类型 描述 LocalStorage 返回LocalStorage实例。
let storage: LocalStorage LocalStorage.GetShared();
has9
has(propName: string): boolean
判断propName对应的属性是否在LocalStorage中存在。
从API version 9开始该接口支持在ArkTS卡片中使用。
参数 参数名 类型 必填 参数描述 propName string 是 LocalStorage中的属性名。
返回值 类型 描述 boolean 如果propName对应的属性在AppStorage中存在则返回true。不存在则返回false。
let storage: LocalStorage new LocalStorage({ PropA: 47 });
storage.has(PropA); // true
get9
getT(propName: string): T | undefined
获取propName在LocalStorage中对应的属性。
从API version 9开始该接口支持在ArkTS卡片中使用。
参数 参数名 类型 必填 参数描述 propName string 是 LocalStorage中的属性名。
返回值 类型 描述 T | undefined LocalStorage中propName对应的属性如果不存在返回undefined。
let storage: LocalStorage new LocalStorage({ PropA: 47 });
let value: number storage.get(PropA); // 47
set9
setT(propName: string, newValue: T): boolean
在LocalStorage中设置propName对应属性的值。如果newValue的值和propName对应属性的值相同即不需要做赋值操作状态变量不会通知UI刷新propName对应属性的值。
从API version 9开始该接口支持在ArkTS卡片中使用。
参数 参数名 类型 必填 参数描述 propName string 是 LocalStorage中的属性名。 newValue T 是 属性值不能为undefined或者null。
返回值 类型 描述 boolean 如果LocalStorage不存在propName对应的属性或者设置的newValue是undefined或者null返回false。设置成功返回true。
let storage: LocalStorage new LocalStorage({ PropA: 47 });
let res: boolean storage.set(PropA, 47); // true
let res1: boolean storage.set(PropB, 47); // false
setOrCreate9
setOrCreateT(propName: string, newValue: T): boolean 如果propName已经在LoStorage中存在并且newValue和propName对应属性的值不同则设置propName对应属性的值为newValue否则状态变量不会通知UI刷新propName对应属性的值。
如果propName不存在则创建propName属性值为newValue。setOrCreate只可以创建单个LocalStorage的键值对如果想创建多个LocalStorage键值对可以多次调用此方法。
从API version 9开始该接口支持在ArkTS卡片中使用。
参数 参数名 类型 必填 参数描述 propName string 是 LocalStorage中的属性名。 newValue T 是 属性值不能为undefined或者null。
返回值 类型 描述 boolean 如果设置的newValue是undefined或者null返回false。 如果LocalStorage存在propName则更新其值为newValue返回true。 如果LocalStorage不存在propName则创建propName并初始化其值为newValue返回true。
let storage: LocalStorage new LocalStorage({ PropA: 47 });
let res: boolean storage.setOrCreate(PropA, 121); // true
let res1: boolean storage.setOrCreate(PropB, 111); // true
let res2: boolean storage.setOrCreate(PropB, undefined); // false
link9
linkT(propName: string): SubscribedAbstractPropertyT
如果给定的propName在LocalStorage实例中存在则返回与LocalStorage中propName对应属性的双向绑定数据。
双向绑定数据的修改会被同步回LocalStorage中LocalStorage会将变化同步到所有绑定该propName的数据和Component中。
如果LocalStorage中不存在propName则返回undefined。
从API version 9开始该接口支持在ArkTS卡片中使用。
参数 参数名 类型 必填 参数描述 propName string 是 LocalStorage中的属性名。
返回值 类型 描述 SubscribedAbstractPropertyT SubscribedAbstractPropertyT的实例如果AppStorage不存在对应的propName再返回undefined。
let storage: LocalStorage new LocalStorage({ PropA: 47 });
let linkToPropA1: SubscribedAbstractPropertynumber storage.link(PropA);
let linkToPropA2: SubscribedAbstractPropertynumber storage.link(PropA); // linkToPropA2.get() 47
linkToPropA1.set(48); // 双向同步: linkToPropA1.get() linkToPropA2.get() 48
setAndLink9
setAndLinkT(propName: string, defaultValue: T): SubscribedAbstractPropertyT
与Link接口类似如果给定的propName在LocalStorage存在则返回该propName对应的属性的双向绑定数据。如果不存在则使用defaultValue在LocalStorage创建和初始化propName返回其双向绑定数据。
从API version 9开始该接口支持在ArkTS卡片中使用。
参数 参数名 类型 必填 参数描述 propName string 是 LocalStorage中的属性名。 defaultValue T 是 当propName在LocalStorage中不存在使用default在LocalStorage中初始化对应的propName。
返回值 类型 描述 SubscribedAbstractPropertyT SubscribedAbstractPropertyT的实例如果AppStorage不存在对应的propName再返回undefined。
let storage: LocalStorage new LocalStorage({ PropA: 47 });
let link1: SubscribedAbstractPropertynumber storage.setAndLink(PropB, 49); // Create PropB 49
var link2: SubscribedAbstractPropertynumber storage.setAndLink(PropA, 50); // PropA exists, remains 47
prop9
propS(propName: string): SubscribedAbstractPropertyS
如果给定的propName在LocalStorage存在则返回与LocalStorage中propName对应属性的单向绑定数据。如果LocalStorage中不存在propName则返回undefined。单向绑定数据的修改不会被同步回LocalStorage中。
从API version 9开始该接口支持在ArkTS卡片中使用。
参数 参数名 类型 必填 参数描述 propName string 是 LocalStorage中的属性名。
返回值 类型 描述 SubscribedAbstractPropertyS SubscribedAbstractPropertyS的实例如果AppStorage不存在对应的propName则返回undefined。
let storage: LocalStorage new LocalStorage({ PropA: 47 });
let prop1: SubscribedAbstractPropertynumber storage.prop(PropA);
let prop2: SubscribedAbstractPropertynumber storage.prop(PropA);
prop1.set(1); // one-way sync: prop1.get()1; but prop2.get() 47
setAndProp9
setAndPropS(propName: string, defaultValue: S): SubscribedAbstractPropertyS
propName在LocalStorage存在则返回该propName对应的属性的单向绑定数据。如果不存在则使用defaultValue在LocalStorage创建和初始化propName对应的属性返回其单向绑定数据。
从API version 9开始该接口支持在ArkTS卡片中使用。
参数 参数名 类型 必填 参数描述 propName string 是 LocalStorage中的属性名。 defaultValue S 是 当propName在AppStorage中不存在使用default在AppStorage中初始化对应的propName。
返回值 类型 描述 SubscribedAbstractPropertyS SubscribedAbstractPropertyS的实例和AppStorage中propName对应属性的单向绑定的数据。
let storage: LocalStorage new LocalStorage({ PropA: 47 });
let prop: SubscribedAbstractPropertynumber storage.setAndProp(PropB, 49); // PropA - 47, PropB - 49
delete9
delete(propName: string): boolean
在LocalStorage中删除propName对应的属性。删除属性的前提是该属性已经没有订阅者如果有则返回false。删除成功则返回true。
属性的订阅者是linkprop接口绑定的propName以及LocalStorageLink(propName)和LocalStorageProp(propName)。如果自定义组件Component中使用或者SubscribedAbstractPropertylink和prop接口的返回类型依旧有同步关系则该属性不能从LocalStorage中删除。
从API version 9开始该接口支持在ArkTS卡片中使用。
参数 参数名 类型 必填 参数描述 propName string 是 LocalStorage中的属性名。
返回值 类型 描述 boolean 如果LocalStorage中有对应的属性且该属性已经没有订阅者则删除成功返回true。如果属性不存在或者该属性还存在订阅者则返回false。
let storage: LocalStorage new LocalStorage({ PropA: 47 });
storage.link(PropA);
let res: boolean storage.delete(PropA); // false, PropA still has a subscriber
let res1: boolean storage.delete(PropB); // false, PropB is not in storage
storage.setOrCreate(PropB, 48);
let res2: boolean storage.delete(PropB); // true, PropB is deleted from storage successfully
keys9
keys(): IterableIteratorstring
返回LocalStorage中所有的属性名。
从API version 9开始该接口支持在ArkTS卡片中使用。
返回值 类型 描述 IterableIteratorstring LocalStorage中所有的属性名。
let storage: LocalStorage new LocalStorage({ PropA: 47 });
let keys: IterableIteratorstring storage.keys();
size9
size(): number
返回LocalStorage中的属性数量。
从API version 9开始该接口支持在ArkTS卡片中使用。
返回值 类型 描述 number 返回键值对的数量。
let storage: LocalStorage new LocalStorage({ PropA: 47 });
let res: number storage.size(); // 1
clear9
clear(): boolean
清除LocalStorage的所有的属性。在LocalStorage中清除所有属性的前提是已经没有任何订阅者。如果有则返回false清除成功返回true。
从API version 9开始该接口支持在ArkTS卡片中使用。
返回值 类型 描述 boolean 如果LocalStorage中的属性已经没有任何订阅者则清除成功返回true。否则返回false。
let storage: LocalStorage new LocalStorage({ PropA: 47 });
let res: boolean storage.clear(); // true, there are no subscribers
SubscribedAbstractProperty
get9
abstract get(): T
读取从AppStorage/LocalStorage同步属性的数据。
从API version 9开始该接口支持在ArkTS卡片中使用。
返回值 类型 描述 T AppStorage/LocalStorage同步属性的数据。
AppStorage.SetOrCreate(PropA, 47);
let prop1 AppStorage.Prop(PropA);
prop1.get(); // prop1.get()47
set9
abstract set(newValue: T): void
设置AppStorage/LocalStorage同步属性的数据。
从API version 9开始该接口支持在ArkTS卡片中使用。
参数 参数名 类型 必填 参数描述 newValue T 是 要设置的数据。
AppStorage.SetOrCreate(PropA, 47);
let prop1 AppStorage.Prop(PropA);
prop1.set(1); // prop1.get()1
PersistentStorage
PersistProp
static PersistPropT(key: string, defaultValue: T): void
将AppStorage中key对应的属性持久化到文件中。该接口的调用通常在访问AppStorage之前。
确定属性的类型和值的顺序如下
如果PersistentStorage文件中存在key对应的属性在AppStorage中创建对应的propName并用在PersistentStorage中找到的key的属性初始化如果PersistentStorage文件中没有查询到key对应的属性则在AppStorage中查找key对应的属性。如果找到key对应的属性则将该属性持久化如果AppStorage也没查找到key对应的属性则在AppStorage中创建key对应的属性。用defaultValue初始化其值并将该属性持久化。
根据上述的初始化流程如果AppStorage中有该属性则会使用其值覆盖掉PersistentStorage文件中的值。由于AppStorage是内存内数据该行为会导致数据丧失持久化能力。示例请参考在PersistentStorage之前访问AppStorage中的属性。
参数 参数名 类型 必填 参数描述 key string 是 属性名。 defaultValue T 是 在PersistentStorage和AppStorage未查询到时则使用默认值初始化初始化它。不允许为undefined和null。
说明
AppStorage的属性向PersistentStorage中持久化的允许的类型是
numberstringbooleanenum基础类型。Object中可序列化的属性。不允许undefined和null。
示例
PersistentStorage.PersistProp(highScore, 0);
DeleteProp
static DeleteProp(key: string): void
PersistProp的逆向操作。将key对应的属性从PersistentStorage删除后续AppStorage的操作对PersistentStorage不会再有影响。
参数 参数名 类型 必填 参数描述 key string 是 PersistentStorage中的属性名。
PersistentStorage.DeleteProp(highScore);
PersistProps
static PersistProps(properties: {key: string, defaultValue: any;}[]): void
行为和PersistProp类似不同在于可以一次性持久化多个数据适合在应用启动的时候初始化。
参数 参数名 类型 必填 参数描述 properties {key: string, defaultValue: any}[] 是 持久化数组启动key为属性名defaultValue为默认值。规则同PersistProp。
PersistentStorage.PersistProps([{ key: highScore, defaultValue: 0 }, { key: wightScore, defaultValue: 1 }]);
Keys
static Keys(): Arraystring
返回所有持久化属性的key的数组。
返回值 类型 描述 Arraystring 返回所有持久化属性的key的数组。
let keys: Arraystring PersistentStorage.Keys();
Environment
EnvProp
static EnvPropS(key: string, value: S): boolean
将Environment的内置环境变量key存入AppStorage中。如果系统中未查询到Environment环境变量key的值则使用默认值value存入成功返回true。如果AppStorage已经有对应的key则返回false。
所以建议在程序启动的时候调用该接口。
在没有调用EnvProp就使用AppStorage读取环境变量是错误的。
参数 参数名 类型 必填 参数描述 key string 是 环境变量名称支持的范围详见内置环境变量说明。 value S 是 查询不到环境变量key则使用value作为默认值存入AppStorage中。
返回值 类型 描述 boolean 如果key对应的属性在AppStorage中存在则返回false。不存在则在AppStorage中创建key对应的属性返回true。
示例
Environment.EnvProp(accessibilityEnabled, default);
内置环境变量说明 key 类型 说明 accessibilityEnabled string 无障碍屏幕朗读是否启用。 colorMode ColorMode 深浅色模式可选值为 - ColorMode.LIGHT浅色模式 - ColorMode.DARK深色模式。 fontScale number 字体大小比例。 fontWeightScale number 字重比例。 layoutDirection LayoutDirection 布局方向类型可选值为 - LayoutDirection.LTR从左到右 - LayoutDirection.RTL从右到左。 languageCode string 当前系统语言小写字母例如zh。
EnvProps
static EnvProps(props: {key: string; defaultValue: any;}[]): void
和EnvProp类似不同点在于参数为数组可以一次性初始化多个数据。建议在应用启动时调用将系统环境变量批量存入AppStorage中。
参数 参数名 类型 必填 参数描述 props {key: string, defaultValue: any}[] 是 系统环境变量和默认值的键值对的数组。
Environment.EnvProps([{ key: accessibilityEnabled, defaultValue: default }, { key: languageCode, defaultValue: en}, { key: prop, defaultValue: hhhh }]);
Keys
static Keys(): Arraystring
返回环境变量的属性key的数组。
返回值 类型 描述 Arraystring 返回关联的系统项数组。
Environment.EnvProps([{ key: accessibilityEnabled, defaultValue: default }, { key: languageCode, defaultValue: en }, { key: prop, defaultValue: hhhh }]);let keys: Arraystring Environment.Keys(); // accessibilityEnabled, languageCode, prop