1# 应用级变量的状态管理 2 3 4状态管理模块提供了应用程序的数据存储能力、持久化数据管理能力、UIAbility数据存储能力和应用程序需要的环境状态。 5 6 7>**说明:** 8> 9>本模块首批接口从API version 7开始支持,后续版本的新增接口,采用上角标单独标记接口的起始版本。 10 11 12本文中T和S的含义如下: 13 14 15| 类型 | 描述 | 16| ---- | -------------------------------------- | 17| T | Class,number,boolean,string和这些类型的数组形式。 | 18| S | number,boolean,string。 | 19 20 21## AppStorage 22 23 24AppStorage具体UI使用说明,详见[AppStorage(应用全局的UI状态存储)](../../../quick-start/arkts-appstorage.md) 25 26 27### link<sup>10+</sup> 28 29static link<T>(propName: string): SubscribedAbstractProperty<T> 30 31与AppStorage中对应的propName建立双向数据绑定。如果给定的propName在AppStorage中存在,返回AppStorage中propName对应属性的双向绑定数据。 32 33双向绑定数据的修改会同步回AppStorage中,AppStorage会将变化同步到所有绑定该propName的数据和自定义组件中。 34 35如果AppStorage中不存在propName,则返回undefined。 36 37**系统能力:** SystemCapability.ArkUI.ArkUI.Full 38 39**参数:** 40 41| 参数名 | 类型 | 必填 | 参数描述 | 42| -------- | ------ | ---- | ---------------- | 43| propName | string | 是 | AppStorage中的属性名。 | 44 45**返回值:** 46 47| 类型 | 描述 | 48| ----------------------------------- | ------------------------------------------------------------ | 49| SubscribedAbstractProperty<T> | 返回双向绑定的数据,如果AppStorage中不存在对应的propName,则返回undefined。 | 50 51**示例:** 52```ts 53AppStorage.setOrCreate('PropA', 47); 54let linkToPropA1: SubscribedAbstractProperty<number> = AppStorage.link('PropA'); 55let linkToPropA2: SubscribedAbstractProperty<number> = AppStorage.link('PropA'); // linkToPropA2.get() == 47 56linkToPropA1.set(48); // 双向同步: linkToPropA1.get() == linkToPropA2.get() == 48 57``` 58 59 60### setAndLink<sup>10+</sup> 61 62static setAndLink<T>(propName: string, defaultValue: T): SubscribedAbstractProperty<T> 63 64与link接口类似,如果给定的propName在AppStorage中存在,则返回该propName对应的属性的双向绑定数据。如果不存在,则使用defaultValue在AppStorage中创建和初始化propName对应的属性,返回其双向绑定数据。defaultValue必须为T类型,且不能为undefined或null。 65 66**系统能力:** SystemCapability.ArkUI.ArkUI.Full 67 68**参数:** 69 70| 参数名 | 类型 | 必填 | 参数描述 | 71| ------------ | ------ | ---- | ------------------------------------------------------------ | 72| propName | string | 是 | AppStorage中的属性名。 | 73| defaultValue | T | 是 | 当propName在AppStorage中不存在时,使用defaultValue在AppStorage中初始化对应的propName,defaultValue不能为undefined或null。 | 74 75**返回值:** 76 77| 类型 | 描述 | 78| ----------------------------------- | ---------------------------------------- | 79| SubscribedAbstractProperty<T> | SubscribedAbstractProperty<T>的实例,和AppStorage中propName对应属性的双向绑定的数据。 | 80 81**示例:** 82```ts 83AppStorage.setOrCreate('PropA', 47); 84let link1: SubscribedAbstractProperty<number> = AppStorage.setAndLink('PropB', 49); // Create PropB 49 85let link2: SubscribedAbstractProperty<number> = AppStorage.setAndLink('PropA', 50); // PropA exists, remains 47 86``` 87 88 89### prop<sup>10+</sup> 90 91static prop<T>(propName: string): SubscribedAbstractProperty<T> 92 93与AppStorage中对应的propName建立单向属性绑定。如果给定的propName在AppStorage中存在,则返回与AppStorage中propName对应属性的单向绑定数据。如果AppStorage中不存在propName,则返回undefined。单向绑定数据的修改不会被同步回AppStorage中。 94 95**系统能力:** SystemCapability.ArkUI.ArkUI.Full 96 97**参数:** 98 99| 参数名 | 类型 | 必填 | 参数描述 | 100| -------- | ------ | ---- | ---------------- | 101| propName | string | 是 | AppStorage中的属性名。 | 102 103**返回值:** 104 105| 类型 | 描述 | 106| ----------------------------------- | ------------------------------------------------------------ | 107| SubscribedAbstractProperty<T> | 返回单向绑定的数据,如果AppStorage中不存在对应的propName,则返回undefined。 | 108 109**示例:** 110 111```ts 112AppStorage.setOrCreate('PropA', 47); 113let prop1: SubscribedAbstractProperty<number> = AppStorage.prop('PropA'); 114let prop2: SubscribedAbstractProperty<number> = AppStorage.prop('PropA'); 115prop1.set(1); // one-way sync: prop1.get()=1; but prop2.get() == 47 116``` 117 118 119### setAndProp<sup>10+</sup> 120 121static setAndProp<T>(propName: string, defaultValue: T): SubscribedAbstractProperty<T> 122 123与prop接口类似。如果给定的propName在AppStorage中存在,则返回该propName对应的属性的单向绑定数据。如果不存在,则使用defaultValue在AppStorage中创建和初始化propName对应的属性,返回其单向绑定数据。defaultValue必须为T类型,且不能为undefined或null。 124 125**系统能力:** SystemCapability.ArkUI.ArkUI.Full 126 127**参数:** 128 129| 参数名 | 类型 | 必填 | 参数描述 | 130| ------------ | ------ | ---- | ------------------------------------------------------------ | 131| propName | string | 是 | AppStorage中的属性名。 | 132| defaultValue | T | 是 | 当propName在AppStorage中不存在时,使用defaultValue在AppStorage中初始化对应的propName,defaultValue不能为undefined或null。 | 133 134**返回值:** 135 136| 类型 | 描述 | 137| ----------------------------------- | --------------------------------------- | 138| SubscribedAbstractProperty<T> | SubscribedAbstractProperty<T>的实例。 | 139 140**示例:** 141```ts 142AppStorage.setOrCreate('PropA', 47); 143let prop: SubscribedAbstractProperty<number> = AppStorage.setAndProp('PropB', 49); // PropA -> 47, PropB -> 49 144``` 145 146 147### has<sup>10+</sup> 148 149static has(propName: string): boolean 150 151判断propName对应的属性是否在AppStorage中存在。 152 153**系统能力:** SystemCapability.ArkUI.ArkUI.Full 154 155**参数:** 156 157| 参数名 | 类型 | 必填 | 参数描述 | 158| -------- | ------ | ---- | ---------------- | 159| propName | string | 是 | AppStorage中的属性名。 | 160 161**返回值:** 162 163| 类型 | 描述 | 164| ------- | ---------------------------------------- | 165| boolean | 如果propName对应的属性在AppStorage中存在,则返回true。不存在则返回false。 | 166 167**示例:** 168```ts 169AppStorage.has('simpleProp'); 170``` 171 172 173### get<sup>10+</sup> 174 175static get<T>(propName: string): T | undefined 176 177获取propName在AppStorage中对应的属性值。如果不存在则返回undefined。 178 179**系统能力:** SystemCapability.ArkUI.ArkUI.Full 180 181**参数:** 182 183| 参数名 | 类型 | 必填 | 参数描述 | 184| -------- | ------ | ---- | ---------------- | 185| propName | string | 是 | AppStorage中的属性名。 | 186 187**返回值:** 188 189| 类型 | 描述 | 190| ------------------------ | ----------------------------------------------------------- | 191| T \| undefined | AppStorage中propName对应的属性,如果不存在则返回undefined。 | 192 193**示例:** 194```ts 195AppStorage.setOrCreate('PropA', 47); 196let value: number = AppStorage.get('PropA') as number; // 47 197``` 198 199 200### set<sup>10+</sup> 201 202static set<T>(propName: string, newValue: T): boolean 203 204在AppStorage中设置propName对应属性的值。如果newValue的值和propName对应属性的值相同,即不需要做赋值操作,状态变量不会通知UI刷新propName对应属性的值。 205 206**系统能力:** SystemCapability.ArkUI.ArkUI.Full 207 208**参数:** 209 210| 参数名 | 类型 | 必填 | 参数描述 | 211| -------- | ------ | ---- | ---------------------- | 212| propName | string | 是 | AppStorage中的属性名。 | 213| newValue | T | 是 | 属性值,不能为undefined或null。 | 214 215**返回值:** 216 217| 类型 | 描述 | 218| ------- | ------------------------------------------------------------ | 219| boolean | 如果AppStorage中不存在propName对应的属性,或者设置的newValue是undefined或者null,返回false。设置成功则返回true。 | 220 221**示例:** 222```ts 223AppStorage.setOrCreate('PropA', 48); 224let res: boolean = AppStorage.set('PropA', 47) // true 225let res1: boolean = AppStorage.set('PropB', 47) // false 226``` 227 228 229### setOrCreate<sup>10+</sup> 230 231static setOrCreate<T>(propName: string, newValue: T): void 232 233如果propName已经在AppStorage中存在,并且newValue和propName对应属性的值不同,则设置propName对应属性的值为newValue,否则状态变量不会通知UI刷新propName对应属性的值。 234如果propName不存在,则创建propName属性,值为newValue。setOrCreate只可以创建单个AppStorage的键值对,如果想创建多个AppStorage键值对,可以多次调用此方法。 235 236newValue不能为undefined或null。 237 238**系统能力:** SystemCapability.ArkUI.ArkUI.Full 239 240**参数:** 241 242| 参数名 | 类型 | 必填 | 参数描述 | 243| -------- | ------ | ---- | ---------------------- | 244| propName | string | 是 | AppStorage中的属性名。 | 245| newValue | T | 是 | 属性值,不能为undefined或null。 | 246 247**示例:** 248```ts 249AppStorage.setOrCreate('simpleProp', 121); 250``` 251 252 253### delete<sup>10+</sup> 254 255static delete(propName: string): boolean 256 257在AppStorage中删除propName对应的属性。 258 259在AppStorage中删除该属性的前提是必须保证该属性没有订阅者。如果有订阅者,则返回false。如果没有订阅者则删除成功并返回true。 260 261属性的订阅者为link、prop等接口绑定的propName,以及\@StorageLink('propName')和\@StorageProp('propName')。如果自定义组件中使用\@StorageLink('propName')和\@StorageProp('propName')或者SubscribedAbstractProperty实例依旧对propName有同步关系,则该属性不能从AppStorage中删除。 262 263**系统能力:** SystemCapability.ArkUI.ArkUI.Full 264 265**参数:** 266 267| 参数名 | 类型 | 必填 | 参数描述 | 268| -------- | ------ | ---- | ---------------- | 269| propName | string | 是 | AppStorage中的属性名。 | 270 271**返回值:** 272 273| 类型 | 描述 | 274| ------- | ---------------------------------------- | 275| boolean | 如果AppStorage中有对应的属性,且该属性已经没有订阅者,则删除成功,返回true。如果属性不存在,或者该属性还存在订阅者,则返回false。 | 276 277**示例:** 278```ts 279AppStorage.setOrCreate('PropA', 47); 280AppStorage.link<number>('PropA'); 281let res: boolean = AppStorage.delete('PropA'); // false, PropA still has a subscriber 282 283AppStorage.setOrCreate('PropB', 48); 284let res1: boolean = AppStorage.delete('PropB'); // true, PropB is deleted from AppStorage successfully 285``` 286 287 288### keys<sup>10+</sup> 289 290static keys(): IterableIterator<string> 291 292返回AppStorage中所有的属性名。 293 294**系统能力:** SystemCapability.ArkUI.ArkUI.Full 295 296**返回值:** 297 298| 类型 | 描述 | 299| ------------------------------ | ------------------ | 300| IterableIterator<string> | AppStorage中所有的属性名。 | 301 302**示例:** 303```ts 304AppStorage.setOrCreate('PropB', 48); 305let keys: IterableIterator<string> = AppStorage.keys(); 306``` 307 308 309### clear<sup>10+</sup> 310 311static clear(): boolean 312 313删除AppStorage中所有属性。删除所有属性的前提是,AppStorage已经没有任何订阅者。如果有订阅者,clear将不会生效并返回false。如果没有订阅者,则删除成功,并返回true。 314 315订阅者的含义参考[delete](#delete10)。 316 317**系统能力:** SystemCapability.ArkUI.ArkUI.Full 318 319**返回值:** 320 321| 类型 | 描述 | 322| ------- | ------------------------------------------------------------ | 323| boolean | 如果AppStorage中的属性已经没有订阅者则删除成功,返回true。否则返回false。 | 324 325**示例:** 326```ts 327AppStorage.setOrCreate('PropA', 47); 328let res: boolean = AppStorage.clear(); // true, there are no subscribers 329``` 330 331 332### size<sup>10+</sup> 333 334static size(): number 335 336返回AppStorage中的属性数量。 337 338**系统能力:** SystemCapability.ArkUI.ArkUI.Full 339 340**返回值:** 341 342| 类型 | 描述 | 343| ------ | ------------------- | 344| number | 返回AppStorage中属性的数量。 | 345 346**示例:** 347```ts 348AppStorage.setOrCreate('PropB', 48); 349let res: number = AppStorage.size(); // 1 350``` 351 352 353### Link<sup>(deprecated)</sup> 354 355static Link(propName: string): any 356 357与AppStorage中对应的propName建立双向数据绑定。如果给定的propName在AppStorage中存在,返回与AppStorage中propName对应属性的双向绑定数据。 358 359双向绑定数据的修改会同步回AppStorage中,AppStorage会将变化同步到所有绑定该propName的数据和自定义组件中。 360 361如果AppStorage中不存在propName,则返回undefined。 362 363> **说明:**<br/> 364> 从API version 7 开始支持,从API version 10 开始废弃,推荐使用[link10+](#link10)替代。 365 366**系统能力:** SystemCapability.ArkUI.ArkUI.Full 367 368**参数:** 369 370| 参数名 | 类型 | 必填 | 参数描述 | 371| -------- | ------ | ---- | ---------------- | 372| propName | string | 是 | AppStorage中的属性名。 | 373 374**返回值:** 375 376| 类型 | 描述 | 377| -------------------------------- | ------------------------------------------------------------ | 378| any | 返回双向绑定的数据,如果AppStorage中不存在对应的propName,则返回undefined。 | 379 380**示例:** 381```ts 382AppStorage.SetOrCreate('PropA', 47); 383let linkToPropA1: SubscribedAbstractProperty<number> = AppStorage.Link('PropA'); 384let linkToPropA2: SubscribedAbstractProperty<number> = AppStorage.Link('PropA'); // linkToPropA2.get() == 47 385linkToPropA1.set(48); // 双向同步: linkToPropA1.get() == linkToPropA2.get() == 48 386``` 387 388### SetAndLink<sup>(deprecated)</sup> 389 390static SetAndLink<T>(propName: string, defaultValue: T): SubscribedAbstractProperty<T> 391 392与Link接口类似,如果给定的propName在AppStorage中存在,则返回该propName对应的属性的双向绑定数据。如果不存在,则使用defaultValue在AppStorage中创建和初始化propName对应的属性,并返回其双向绑定数据。defaultValue必须为T类型,且不能为undefined或null。 393 394> **说明:**<br/> 395> 从API version 7 开始支持,从API version 10 开始废弃,推荐使用[setAndLink10+](#setandlink10)替代。 396 397**系统能力:** SystemCapability.ArkUI.ArkUI.Full 398 399**参数:** 400 401| 参数名 | 类型 | 必填 | 参数描述 | 402| ------------ | ------ | ---- | ------------------------------------------------------------ | 403| propName | string | 是 | AppStorage中的属性名。 | 404| defaultValue | T | 是 | 当propName在AppStorage中不存在,使用defaultValue在AppStorage中初始化对应的propName,defaultValue不能为undefined或null。 | 405 406**返回值:** 407 408| 类型 | 描述 | 409| ----------------------------------- | ---------------------------------------- | 410| SubscribedAbstractProperty<T> | SubscribedAbstractProperty<T>的实例,和AppStorage中propName对应属性的双向绑定的数据。 | 411 412**示例:** 413```ts 414AppStorage.SetOrCreate('PropA', 47); 415let link1: SubscribedAbstractProperty<number> = AppStorage.SetAndLink('PropB', 49); // Create PropB 49 416let link2: SubscribedAbstractProperty<number> = AppStorage.SetAndLink('PropA', 50); // PropA exists, remains 47 417``` 418 419 420### Prop<sup>(deprecated)</sup> 421 422static Prop(propName: string): any 423 424与AppStorage中对应的propName建立单向属性绑定。如果给定的propName在AppStorage中存在,则返回与AppStorage中propName对应属性的单向绑定数据。如果AppStorage中不存在propName,则返回undefined。单向绑定数据的修改不会被同步回AppStorage中。 425 426> **说明:**<br/> 427> Prop仅支持简单类型。 428> 从API version 7 开始支持,从API version 10 开始废弃,推荐使用[prop10+](#prop10)替代。 429 430**系统能力:** SystemCapability.ArkUI.ArkUI.Full 431 432**参数:** 433 434| 参数名 | 类型 | 必填 | 参数描述 | 435| -------- | ------ | ---- | ---------------- | 436| propName | string | 是 | AppStorage中的属性名。 | 437 438**返回值:** 439 440| 类型 | 描述 | 441| -------------------------------- | ------------------------------------------------------------ | 442| any | 返回单向绑定的数据,如果AppStorage中不存在对应的propName,则返回undefined。 | 443 444**示例:** 445```ts 446AppStorage.SetOrCreate('PropA', 47); 447let prop1: SubscribedAbstractProperty<number> = AppStorage.Prop('PropA'); 448let prop2: SubscribedAbstractProperty<number> = AppStorage.Prop('PropA'); 449prop1.set(1); // one-way sync: prop1.get()=1; but prop2.get() == 47 450``` 451 452### SetAndProp<sup>(deprecated)</sup> 453 454static SetAndProp<S>(propName: string, defaultValue: S): SubscribedAbstractProperty<S> 455 456与Prop接口类似。如果给定的propName在AppStorage中存在,则返回该propName对应的属性的单向绑定数据。如果不存在,则使用defaultValue在AppStorage中创建和初始化propName对应的属性,返回其单向绑定数据。defaultValue必须为S类型,且不能为undefined或null。 457 458> **说明:**<br/> 459> 从API version 7 开始支持,从API version 10 开始废弃,推荐使用[setAndProp10+](#setandprop10)替代。 460 461**系统能力:** SystemCapability.ArkUI.ArkUI.Full 462 463**参数:** 464 465| 参数名 | 类型 | 必填 | 参数描述 | 466| ------------ | ------ | ---- | ------------------------------------------------------------ | 467| propName | string | 是 | AppStorage中的属性名。 | 468| defaultValue | S | 是 | 当propName在AppStorage中不存在时,使用defaultValue在AppStorage中初始化对应的propName,defaultValue不能为undefined或null。 | 469 470**返回值:** 471 472| 类型 | 描述 | 473| ----------------------------------- | --------------------------------------- | 474| SubscribedAbstractProperty<S> | SubscribedAbstractProperty<S>的实例。 | 475 476**示例:** 477```ts 478AppStorage.SetOrCreate('PropA', 47); 479let prop: SubscribedAbstractProperty<number> = AppStorage.SetAndProp('PropB', 49); // PropA -> 47, PropB -> 49 480``` 481 482### Has<sup>(deprecated)</sup> 483 484static Has(propName: string): boolean 485 486判断propName对应的属性是否在AppStorage中存在。 487 488> **说明:**<br/> 489> 从API version 7 开始支持,从API version 10 开始废弃,推荐使用[has10+](#has10)替代。 490 491**系统能力:** SystemCapability.ArkUI.ArkUI.Full 492 493**参数:** 494 495| 参数名 | 类型 | 必填 | 参数描述 | 496| -------- | ------ | ---- | ---------------- | 497| propName | string | 是 | AppStorage中的属性名。 | 498 499**返回值:** 500 501| 类型 | 描述 | 502| ------- | ---------------------------------------- | 503| boolean | 如果propName对应的属性在AppStorage中存在,则返回true。不存在则返回false。 | 504 505**示例:** 506```ts 507AppStorage.Has('simpleProp'); 508``` 509 510### Get<sup>(deprecated)</sup> 511 512static Get<T>(propName: string): T | undefined 513 514获取propName在AppStorage中对应的属性值。如果不存在则返回undefined。 515 516> **说明:**<br/> 517> 从API version 7 开始支持,从API version 10 开始废弃,推荐使用[get10+](#get10)替代。 518 519**系统能力:** SystemCapability.ArkUI.ArkUI.Full 520 521**参数:** 522 523| 参数名 | 类型 | 必填 | 参数描述 | 524| -------- | ------ | ---- | ---------------- | 525| propName | string | 是 | AppStorage中的属性名。 | 526 527**返回值:** 528 529| 类型 | 描述 | 530| ------------------------ | ------------------------------------------------------------ | 531| T \| undefined | AppStorage中propName对应的属性值,如果不存在则返回undefined。 | 532 533**示例:** 534```ts 535AppStorage.SetOrCreate('PropA', 47); 536let value: number = AppStorage.Get('PropA') as number; // 47 537``` 538 539### Set<sup>(deprecated)</sup> 540 541static Set<T>(propName: string, newValue: T): boolean 542 543在AppStorage中设置propName对应属性的值。 544 545> **说明:**<br/> 546> 从API version 7 开始支持,从API version 10 开始废弃,推荐使用[set10+](#set10)替代。 547 548**系统能力:** SystemCapability.ArkUI.ArkUI.Full 549 550**参数:** 551 552| 参数名 | 类型 | 必填 | 参数描述 | 553| -------- | ------ | ---- | ---------------------- | 554| propName | string | 是 | AppStorage中的属性名。 | 555| newValue | T | 是 | 属性值,不能为undefined或null。 | 556 557**返回值:** 558 559| 类型 | 描述 | 560| ------- | ------------------------------------------------------------ | 561| boolean | 如果AppStorage中不存在propName对应的属性,或者设置的newValue是undefined或者null,返回false。设置成功则返回true。 | 562 563**示例:** 564```ts 565AppStorage.SetOrCreate('PropA', 48); 566let res: boolean = AppStorage.Set('PropA', 47) // true 567let res1: boolean = AppStorage.Set('PropB', 47) // false 568``` 569 570### SetOrCreate<sup>(deprecated)</sup> 571 572static SetOrCreate<T>(propName: string, newValue: T): void 573 574如果propName已经在AppStorage中存在,则设置propName对应是属性的值为newValue。如果不存在,则创建propName属性,值为newValue。 575 576newValue不能为undefined或null。 577 578> **说明:**<br/> 579> 从API version 7 开始支持,从API version 10 开始废弃,推荐使用[setOrCreate10+](#setorcreate10)替代。 580 581**系统能力:** SystemCapability.ArkUI.ArkUI.Full 582 583**参数:** 584 585| 参数名 | 类型 | 必填 | 参数描述 | 586| -------- | ------ | ---- | ---------------------- | 587| propName | string | 是 | AppStorage中的属性名。 | 588| newValue | T | 是 | 属性值,不能为undefined或null。 | 589 590**示例:** 591```ts 592AppStorage.SetOrCreate('simpleProp', 121); 593``` 594 595### Delete<sup>(deprecated)</sup> 596 597static Delete(propName: string): boolean 598 599在AppStorage中删除propName对应的属性。 600 601在AppStorage中删除该属性的前提是必须保证该属性没有订阅者。如果有订阅者,则返回false。如果没有订阅者则删除成功并返回true。 602 603属性的订阅者为Link、Prop等接口绑定的propName,以及\@StorageLink('propName')和\@StorageProp('propName')。如果自定义组件中使用\@StorageLink('propName')和\@StorageProp('propName')或者SubscribedAbstractProperty实例依旧对propName有同步关系,则该属性不能从AppStorage中删除。 604 605> **说明:**<br/> 606> 从API version 7 开始支持,从API version 10 开始废弃,推荐使用[delete10+](#delete10)替代。 607 608**系统能力:** SystemCapability.ArkUI.ArkUI.Full 609 610**参数:** 611 612| 参数名 | 类型 | 必填 | 参数描述 | 613| -------- | ------ | ---- | ---------------- | 614| propName | string | 是 | AppStorage中的属性名。 | 615 616**返回值:** 617 618| 类型 | 描述 | 619| ------- | ---------------------------------------- | 620| boolean | 如果AppStorage中有对应的属性,且该属性已经没有订阅者,则删除成功,返回true。如果属性不存在,或者该属性还存在订阅者,则返回false。 | 621 622**示例:** 623```ts 624AppStorage.SetOrCreate('PropA', 47); 625AppStorage.Link('PropA'); 626let res: boolean = AppStorage.Delete('PropA'); // false, PropA still has a subscriber 627 628AppStorage.SetOrCreate('PropB', 48); 629let res1: boolean = AppStorage.Delete('PropB'); // true, PropB is deleted from AppStorage successfully 630``` 631 632### Keys<sup>(deprecated)</sup> 633 634static Keys(): IterableIterator<string> 635 636返回AppStorage中所有的属性名。 637 638> **说明:**<br/> 639> 从API version 7 开始支持,从API version 10 开始废弃,推荐使用[keys10+](#keys10)替代。 640 641**系统能力:** SystemCapability.ArkUI.ArkUI.Full 642 643**返回值:** 644 645| 类型 | 描述 | 646| ------------------------------ | ------------------ | 647| IterableIterator<string> | AppStorage中所有的属性名。 | 648 649**示例:** 650```ts 651AppStorage.SetOrCreate('PropB', 48); 652let keys: IterableIterator<string> = AppStorage.Keys(); 653``` 654 655 656### staticClear<sup>(deprecated)</sup> 657 658static staticClear(): boolean 659 660删除所有的属性。 661 662> **说明:**<br/> 663> 从API version 7 开始支持,从API version 9 开始废弃,推荐使用[clear10+](#clear10)替代。 664 665**系统能力:** SystemCapability.ArkUI.ArkUI.Full 666 667**返回值:** 668 669| 类型 | 描述 | 670| ------- | --------------------------------- | 671| boolean | 删除所有的属性,如果当前有状态变量依旧引用此属性,返回false。 | 672 673**示例:** 674```ts 675let simple = AppStorage.staticClear(); 676``` 677 678 679### Clear<sup>(deprecated)</sup> 680 681static Clear(): boolean 682 683删除AppStorage中所有属性。删除所有属性的前提是,AppStorage已经没有任何订阅者。如果有订阅者,Clear将不会生效并返回false。如果没有订阅者且删除成功则返回true。 684 685订阅者的含义参考[delete](#delete10)。 686 687> **说明:**<br/> 688> 从API version 9 开始支持,从API version 10 开始废弃,推荐使用[clear10+](#clear10)替代。 689 690**系统能力:** SystemCapability.ArkUI.ArkUI.Full 691 692**返回值:** 693 694| 类型 | 描述 | 695| ------- | ------------------------------------------------------------ | 696| boolean | 如果AppStorage中的属性已经没有订阅者则删除成功,返回true。否则返回false。 | 697 698**示例:** 699```typescript 700AppStorage.SetOrCreate('PropA', 47); 701let res: boolean = AppStorage.Clear(); // true, there are no subscribers 702``` 703 704 705### IsMutable<sup>(deprecated)</sup> 706 707static IsMutable(propName: string): boolean 708 709返回AppStorage中propName对应的属性是否是可变的。 710 711> **说明:**<br/> 712> 从API version 7 开始支持,从API version 10 开始废弃。 713 714**系统能力:** SystemCapability.ArkUI.ArkUI.Full 715 716**参数:** 717 718| 参数名 | 类型 | 必填 | 参数描述 | 719| -------- | ------ | ---- | ---------------- | 720| propName | string | 是 | AppStorage中的属性名。 | 721 722**返回值:** 723 724| 类型 | 描述 | 725| ------- | -------------------------------- | 726| boolean | 返回AppStorage中propNam对应的属性是否是可变的。 | 727 728**示例:** 729```ts 730AppStorage.SetOrCreate('PropA', 47); 731let res: boolean = AppStorage.IsMutable('simpleProp'); 732``` 733 734 735### Size<sup>(deprecated)</sup> 736 737static Size(): number 738 739返回AppStorage中的属性数量。 740 741> **说明:**<br/> 742> 从API version 7 开始支持,从API version 10 开始废弃,推荐使用[size10+](#size10)替代。 743 744**系统能力:** SystemCapability.ArkUI.ArkUI.Full 745 746**返回值:** 747 748| 类型 | 描述 | 749| ------ | ------------------- | 750| number | 返回AppStorage中属性的数量。 | 751 752**示例:** 753```ts 754AppStorage.SetOrCreate('PropB', 48); 755let res: number = AppStorage.Size(); // 1 756``` 757 758 759## LocalStorage<sup>9+</sup> 760 761 762LocalStorage具体UI使用说明,详见[LocalStorage(页面级UI状态存储)](../../../quick-start/arkts-localstorage.md) 763 764 765### constructor<sup>9+</sup> 766 767constructor(initializingProperties?: Object) 768 769创建一个新的LocalStorage实例。使用Object.keys(initializingProperties)返回的属性和其数值,初始化LocalStorage实例。 770 771> **说明:**<br/> 772> 从API version 9开始,该接口支持在ArkTS卡片中使用。 773 774**系统能力:** SystemCapability.ArkUI.ArkUI.Full 775 776**参数:** 777 778| 参数名 | 类型 | 必填 | 参数描述 | 779| ---------------------- | ------ | ---- | ---------------------------------------- | 780| initializingProperties | Object | 否 | 用initializingProperties包含的属性和数值初始化LocalStorage。initializingProperties不能为undefined。 | 781 782**示例:** 783```ts 784let para: Record<string, number> = { 'PropA': 47 }; 785let storage: LocalStorage = new LocalStorage(para); 786``` 787 788 789### getShared<sup>10+</sup> 790 791static getShared(): LocalStorage 792 793获取当前stage共享的LocalStorage实例。 794 795> **说明:**<br/> 796> 从API version 9开始,该接口支持在ArkTS卡片中使用。 797 798**系统能力:** SystemCapability.ArkUI.ArkUI.Full 799 800**模型约束:**此接口仅可在Stage模型下使用。 801 802**返回值:** 803 804| 类型 | 描述 | 805| ------------------------------ | ----------------- | 806| [LocalStorage](#localstorage9) | 返回LocalStorage实例。 | 807 808**示例:** 809getShared具体使用,见[在UI页面通过getShared接口获取在通过loadContent共享的LocalStorage实例](../../../quick-start/arkts-localstorage.md#将localstorage实例从uiability共享到一个或多个视图) 810 811 812### has<sup>9+</sup> 813 814has(propName: string): boolean 815 816判断propName对应的属性是否在LocalStorage中存在。 817 818> **说明:**<br/> 819> 从API version 9开始,该接口支持在ArkTS卡片中使用。 820 821**系统能力:** SystemCapability.ArkUI.ArkUI.Full 822 823**参数:** 824 825| 参数名 | 类型 | 必填 | 参数描述 | 826| -------- | ------ | ---- | ------------------ | 827| propName | string | 是 | LocalStorage中的属性名。 | 828 829**返回值:** 830 831| 类型 | 描述 | 832| ------- | ------------------------------------------------------------ | 833| boolean | 如果propName对应的属性在LocalStorage中存在,则返回true。不存在则返回false。 | 834 835**示例:** 836```ts 837let para: Record<string, number> = { 'PropA': 47 }; 838let storage: LocalStorage = new LocalStorage(para); 839storage.has('PropA'); // true 840``` 841 842 843### get<sup>9+</sup> 844 845get<T>(propName: string): T | undefined 846 847获取propName在LocalStorage中对应的属性值。 848 849> **说明:**<br/> 850> 从API version 9开始,该接口支持在ArkTS卡片中使用。 851 852**系统能力:** SystemCapability.ArkUI.ArkUI.Full 853 854**参数:** 855 856| 参数名 | 类型 | 必填 | 参数描述 | 857| -------- | ------ | ---- | ------------------ | 858| propName | string | 是 | LocalStorage中的属性名。 | 859 860**返回值:** 861 862| 类型 | 描述 | 863| ------------------------ | ------------------------------------------------------------ | 864| T \| undefined | LocalStorage中propName对应的属性值,如果不存在则返回undefined。 | 865 866**示例:** 867```ts 868let para: Record<string, number> = { 'PropA': 47 }; 869let storage: LocalStorage = new LocalStorage(para); 870let value: number = storage.get('PropA') as number; // 47 871``` 872 873 874### set<sup>9+</sup> 875 876set<T>(propName: string, newValue: T): boolean 877 878在LocalStorage中设置propName对应属性的值。如果newValue的值和propName对应属性的值相同,即不需要做赋值操作,状态变量不会通知UI刷新propName对应属性的值。 879 880> **说明:**<br/> 881> 从API version 9开始,该接口支持在ArkTS卡片中使用。 882 883**系统能力:** SystemCapability.ArkUI.ArkUI.Full 884 885**参数:** 886 887| 参数名 | 类型 | 必填 | 参数描述 | 888| -------- | ------ | ---- | ----------------------- | 889| propName | string | 是 | LocalStorage中的属性名。 | 890| newValue | T | 是 | 属性值,不能为undefined或者null。 | 891 892**返回值:** 893 894| 类型 | 描述 | 895| ------- | ------------------------------------------------------------ | 896| boolean | 如果LocalStorage中不存在propName对应的属性,或者设置的newValue是undefined或者null,返回false。设置成功返回true。 | 897 898**示例:** 899 900```ts 901let para: Record<string, number> = { 'PropA': 47 }; 902let storage: LocalStorage = new LocalStorage(para); 903let res: boolean = storage.set('PropA', 47); // true 904let res1: boolean = storage.set('PropB', 47); // false 905``` 906 907 908### setOrCreate<sup>9+</sup> 909 910setOrCreate<T>(propName: string, newValue: T): boolean 911 912如果propName已经在LocalStorage中存在,并且newValue和propName对应属性的值不同,则设置propName对应属性的值为newValue,否则状态变量不会通知UI刷新propName对应属性的值。 913如果propName不存在,则创建propName属性,值为newValue。setOrCreate只可以创建单个LocalStorage的键值对,如果想创建多个LocalStorage键值对,可以多次调用此方法。 914 915> **说明:**<br/> 916> 从API version 9开始,该接口支持在ArkTS卡片中使用。 917 918**系统能力:** SystemCapability.ArkUI.ArkUI.Full 919 920**参数:** 921 922| 参数名 | 类型 | 必填 | 参数描述 | 923| -------- | ------ | ---- | ----------------------- | 924| propName | string | 是 | LocalStorage中的属性名。 | 925| newValue | T | 是 | 属性值,不能为undefined或者null。 | 926 927**返回值:** 928 929| 类型 | 描述 | 930| ------- | ------------------------------------------------------------ | 931| boolean | 如果设置的newValue是undefined或者null,返回false。<br/>如果LocalStorage中存在propName,则更新其值为newValue,返回true。<br/>如果LocalStorage中不存在propName,则创建propName,并初始化其值为newValue,返回true。 | 932 933**示例:** 934 935```ts 936let para: Record<string, number> = { 'PropA': 47 }; 937let storage: LocalStorage = new LocalStorage(para); 938let res: boolean = storage.setOrCreate('PropA', 121); // true 939let res1: boolean = storage.setOrCreate('PropB', 111); // true 940let res2: boolean = storage.setOrCreate('PropB', null); // false 941``` 942 943 944### link<sup>9+</sup> 945 946link<T>(propName: string): SubscribedAbstractProperty<T> 947 948如果给定的propName在LocalStorage实例中存在,则返回与LocalStorage中propName对应属性的双向绑定数据。 949 950双向绑定数据的修改会被同步回LocalStorage中,LocalStorage会将变化同步到所有绑定该propName的数据和Component中。 951 952如果LocalStorage中不存在propName,则返回undefined。 953 954> **说明:**<br/> 955> 从API version 9开始,该接口支持在ArkTS卡片中使用。 956 957**系统能力:** SystemCapability.ArkUI.ArkUI.Full 958 959**参数:** 960 961| 参数名 | 类型 | 必填 | 参数描述 | 962| -------- | ------ | ---- | ------------------ | 963| propName | string | 是 | LocalStorage中的属性名。 | 964 965**返回值:** 966 967| 类型 | 描述 | 968| ----------------------------------- | ------------------------------------------------------------ | 969| SubscribedAbstractProperty<T> | SubscribedAbstractProperty<T>的实例,与LocalStorage中propName对应属性的双向绑定的数据,如果LocalStorage中不存在对应的propName,则返回undefined。 | 970 971**示例:** 972```ts 973let para: Record<string, number> = { 'PropA': 47 }; 974let storage: LocalStorage = new LocalStorage(para); 975let linkToPropA1: SubscribedAbstractProperty<number> = storage.link('PropA'); 976let linkToPropA2: SubscribedAbstractProperty<number> = storage.link('PropA'); // linkToPropA2.get() == 47 977linkToPropA1.set(48); // 双向同步: linkToPropA1.get() == linkToPropA2.get() == 48 978``` 979 980 981### setAndLink<sup>9+</sup> 982 983setAndLink<T>(propName: string, defaultValue: T): SubscribedAbstractProperty<T> 984 985与link接口类似,如果给定的propName在LocalStorage中存在,则返回该propName对应的属性的双向绑定数据。如果不存在,则使用defaultValue在LocalStorage中创建和初始化propName对应的属性,返回其双向绑定数据。defaultValue必须为T类型,且不能为undefined或null。 986 987> **说明:**<br/> 988> 从API version 9开始,该接口支持在ArkTS卡片中使用。 989 990**系统能力:** SystemCapability.ArkUI.ArkUI.Full 991 992**参数:** 993 994| 参数名 | 类型 | 必填 | 参数描述 | 995| ------------ | ------ | ---- | ------------------------------------------------------------ | 996| propName | string | 是 | LocalStorage中的属性名。 | 997| defaultValue | T | 是 | 当propName在LocalStorage中不存在时,使用defaultValue在LocalStorage中初始化对应的propName,defaultValue不能为undefined或null。 | 998 999**返回值:** 1000 1001| 类型 | 描述 | 1002| ----------------------------------- | ------------------------------------------------------------ | 1003| SubscribedAbstractProperty<T> | SubscribedAbstractProperty<T>的实例,与LocalStorage中propName对应属性的双向绑定的数据。 | 1004 1005**示例:** 1006```ts 1007let para: Record<string, number> = { 'PropA': 47 }; 1008let storage: LocalStorage = new LocalStorage(para); 1009let link1: SubscribedAbstractProperty<number> = storage.setAndLink('PropB', 49); // Create PropB 49 1010let link2: SubscribedAbstractProperty<number> = storage.setAndLink('PropA', 50); // PropA exists, remains 47 1011``` 1012 1013 1014### prop<sup>9+</sup> 1015 1016prop<S>(propName: string): SubscribedAbstractProperty<S> 1017 1018如果给定的propName在LocalStorage中存在,则返回与LocalStorage中propName对应属性的单向绑定数据。如果LocalStorage中不存在propName,则返回undefined。单向绑定数据的修改不会被同步回LocalStorage中。 1019 1020> **说明:**<br/> 1021> 从API version 9开始,该接口支持在ArkTS卡片中使用。 1022 1023**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1024 1025**参数:** 1026 1027| 参数名 | 类型 | 必填 | 参数描述 | 1028| -------- | ------ | ---- | ------------------ | 1029| propName | string | 是 | LocalStorage中的属性名。 | 1030 1031**返回值:** 1032 1033| 类型 | 描述 | 1034| ----------------------------------- | ------------------------------------------------------------ | 1035| SubscribedAbstractProperty<S> | SubscribedAbstractProperty<S>的实例,和LocalStorage中propName对应属性的单向绑定的数据。如果LocalStorage中不存在对应的propName,则返回undefined。 | 1036 1037**示例:** 1038```ts 1039let para: Record<string, number> = { 'PropA': 47 }; 1040let storage: LocalStorage = new LocalStorage(para); 1041let prop1: SubscribedAbstractProperty<number> = storage.prop('PropA'); 1042let prop2: SubscribedAbstractProperty<number> = storage.prop('PropA'); 1043prop1.set(1); // one-way sync: prop1.get()=1; but prop2.get() == 47 1044``` 1045 1046 1047### setAndProp<sup>9+</sup> 1048 1049setAndProp<S>(propName: string, defaultValue: S): SubscribedAbstractProperty<S> 1050 1051与prop接口类似。如果propName在LocalStorage中存在,则返回该propName对应的属性的单向绑定数据。如果不存在,则使用defaultValue在LocalStorage中创建和初始化propName对应的属性,返回其单向绑定数据。defaultValue必须为S类型,且不能为undefined或null。 1052 1053> **说明:**<br/> 1054> 从API version 9开始,该接口支持在ArkTS卡片中使用。 1055 1056**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1057 1058**参数:** 1059 1060| 参数名 | 类型 | 必填 | 参数描述 | 1061| ------------ | ------ | ---- | ------------------------------------------------------------ | 1062| propName | string | 是 | LocalStorage中的属性名。 | 1063| defaultValue | S | 是 | 当propName在LocalStorage中不存在,使用defaultValue在LocalStorage中初始化对应的propName,defaultValue不能为undefined或null。 | 1064 1065**返回值:** 1066 1067| 类型 | 描述 | 1068| ----------------------------------- | ------------------------------------------------------------ | 1069| SubscribedAbstractProperty<S> | SubscribedAbstractProperty<S>的实例,和LocalStorage中propName对应属性的单向绑定的数据。 | 1070 1071**示例:** 1072 1073```ts 1074let para: Record<string, number> = { 'PropA': 47 }; 1075let storage: LocalStorage = new LocalStorage(para); 1076let prop: SubscribedAbstractProperty<number> = storage.setAndProp('PropB', 49); // PropA -> 47, PropB -> 49 1077``` 1078 1079 1080### delete<sup>9+</sup> 1081 1082delete(propName: string): boolean 1083 1084在LocalStorage中删除propName对应的属性。在LocalStorage中删除属性的前提是该属性已经没有订阅者,如果有订阅者,则返回false。如果没有订阅者则删除成功并返回true。 1085 1086属性的订阅者为link,prop等接口绑定的propName,以及\@LocalStorageLink('propName')和\@LocalStorageProp('propName')。如果自定义组件中使用\@LocalStorageLink('propName')和\@LocalStorageProp('propName')或者SubscribedAbstractProperty实例(link和prop接口的返回类型)依旧对propName有同步关系,则该属性不能从LocalStorage中删除。 1087 1088> **说明:**<br/> 1089> 从API version 9开始,该接口支持在ArkTS卡片中使用。 1090 1091**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1092 1093**参数:** 1094 1095| 参数名 | 类型 | 必填 | 参数描述 | 1096| -------- | ------ | ---- | ------------------ | 1097| propName | string | 是 | LocalStorage中的属性名。 | 1098 1099**返回值:** 1100 1101| 类型 | 描述 | 1102| ------- | ------------------------------------------------------------ | 1103| boolean | 如果LocalStorage中有对应的属性,且该属性已经没有订阅者,则删除成功,返回true。如果属性不存在,或者该属性还存在订阅者,则返回false。 | 1104 1105**示例:** 1106```ts 1107let para: Record<string, number> = { 'PropA': 47 }; 1108let storage: LocalStorage = new LocalStorage(para); 1109storage.link<number>('PropA'); 1110let res: boolean = storage.delete('PropA'); // false, PropA still has a subscriber 1111let res1: boolean = storage.delete('PropB'); // false, PropB is not in storage 1112storage.setOrCreate('PropB', 48); 1113let res2: boolean = storage.delete('PropB'); // true, PropB is deleted from storage successfully 1114``` 1115 1116 1117### keys<sup>9+</sup> 1118 1119keys(): IterableIterator<string> 1120 1121返回LocalStorage中所有的属性名。 1122 1123> **说明:**<br/> 1124> 从API version 9开始,该接口支持在ArkTS卡片中使用。 1125 1126**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1127 1128**返回值:** 1129 1130| 类型 | 描述 | 1131| ------------------------------ | -------------------- | 1132| IterableIterator<string> | LocalStorage中所有的属性名。 | 1133 1134**示例:** 1135```ts 1136let para: Record<string, number> = { 'PropA': 47 }; 1137let storage: LocalStorage = new LocalStorage(para); 1138let keys: IterableIterator<string> = storage.keys(); 1139``` 1140 1141 1142### size<sup>9+</sup> 1143 1144size(): number 1145 1146返回LocalStorage中的属性数量。 1147 1148> **说明:**<br/> 1149> 从API version 9开始,该接口支持在ArkTS卡片中使用。 1150 1151**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1152 1153**返回值:** 1154 1155| 类型 | 描述 | 1156| ------ | ---------------------------- | 1157| number | LocalStorage中属性的的数量。 | 1158 1159**示例:** 1160```ts 1161let para: Record<string, number> = { 'PropA': 47 }; 1162let storage: LocalStorage = new LocalStorage(para); 1163let res: number = storage.size(); // 1 1164``` 1165 1166 1167### clear<sup>9+</sup> 1168 1169clear(): boolean 1170 1171删除LocalStorage中所有的属性。删除所有属性的前提是已经没有任何订阅者。如果有订阅者,clear不会生效并返回false。如果没有订阅者则删除成功并返回true。 1172 1173订阅者的含义参考[delete](#delete9) 1174 1175> **说明:**<br/> 1176> 从API version 9开始,该接口支持在ArkTS卡片中使用。 1177 1178**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1179 1180**返回值:** 1181 1182 1183| 类型 | 描述 | 1184| ------- | ------------------------------------------------------------ | 1185| boolean | 如果LocalStorage中的属性已经没有任何订阅者,则删除成功,并返回true。否则返回false。 | 1186 1187 1188**示例:** 1189```ts 1190let para: Record<string, number> = { 'PropA': 47 }; 1191let storage: LocalStorage = new LocalStorage(para); 1192let res: boolean = storage.clear(); // true, there are no subscribers 1193``` 1194 1195 1196### GetShared<sup>(deprecated)</sup> 1197 1198static GetShared(): LocalStorage 1199 1200获取当前stage共享的LocalStorage实例。 1201 1202> **说明:**<br/> 1203> 从API version 9开始,该接口支持在ArkTS卡片中使用。 1204> 从API version 10开始废弃,推荐使用[getShared10+](#getshared10)。 1205 1206**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1207 1208**模型约束:**此接口仅可在Stage模型下使用。 1209 1210**返回值:** 1211 1212| 类型 | 描述 | 1213| ------------------------------ | ----------------- | 1214| [LocalStorage](#localstorage9) | 返回LocalStorage实例。 | 1215 1216**示例:** 1217```ts 1218let storage: LocalStorage = LocalStorage.GetShared(); 1219``` 1220 1221 1222## SubscribedAbstractProperty 1223 1224 1225### get<sup>9+</sup> 1226 1227abstract get(): T 1228 1229读取从AppStorage/LocalStorage同步属性的数据。 1230 1231> **说明:**<br/> 1232> 从API version 9开始,该接口支持在ArkTS卡片中使用。 1233 1234**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1235 1236**返回值:** 1237 1238| 类型 | 描述 | 1239| ---- | ------------------------------- | 1240| T | AppStorage/LocalStorage同步属性的数据。 | 1241 1242**示例:** 1243```ts 1244AppStorage.setOrCreate('PropA', 47); 1245let prop1: SubscribedAbstractProperty<number> = AppStorage.prop('PropA'); 1246prop1.get(); // prop1.get()=47 1247``` 1248 1249 1250### set<sup>9+</sup> 1251 1252abstract set(newValue: T): void 1253 1254设置AppStorage/LocalStorage同步属性的数据,newValue必须是T类型,不能为undefined或null。 1255 1256> **说明:**<br/> 1257> 从API version 9开始,该接口支持在ArkTS卡片中使用。 1258 1259**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1260 1261 1262**参数:** 1263 1264 1265| 参数名 | 类型 | 必填 | 参数描述 | 1266| -------- | ---- | ---- | ------------------------------------- | 1267| newValue | T | 是 | 要设置的数据,不能为undefined或null。 | 1268 1269 1270**示例:** 1271```ts 1272AppStorage.setOrCreate('PropA', 47); 1273let prop1: SubscribedAbstractProperty<number> = AppStorage.prop('PropA'); 1274prop1.set(1); // prop1.get()=1 1275``` 1276 1277### aboutToBeDeleted<sup>10+</sup> 1278 1279abstract aboutToBeDeleted(): void 1280 1281取消SubscribedAbstractProperty实例对AppStorage/LocalStorage的单/双向同步关系,并无效化SubscribedAbstractProperty实例,即当调用aboutToBeDelted方法之后不能再使用SubscribedAbstractProperty实例调用set或get方法。 1282 1283**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1284 1285**示例:** 1286```ts 1287AppStorage.setOrCreate('PropA', 47); 1288let link = AppStorage.setAndLink('PropB', 49); // PropA -> 47, PropB -> 49 1289link.aboutToBeDeleted(); 1290``` 1291 1292 1293## PersistentStorage 1294 1295 1296PersistentStorage具体UI使用说明,详见[PersistentStorage(持久化存储UI状态)](../../../quick-start/arkts-persiststorage.md) 1297 1298### PersistPropsOptions 1299 1300**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1301 1302**参数:** 1303 1304| 参数名 | 类型 | 必填 | 参数描述 | 1305| ------------ | ------------------------------------- | ---- | ------------------------------------------------------------ | 1306| key | string | 是 | 属性名。 | 1307| defaultValue | number \| string \| boolean \| Object | 是 | 在PersistentStorage和AppStorage未查询到时,则使用默认值初始化它。不允许为undefined和null。 | 1308 1309 1310### persistProp<sup>10+</sup> 1311 1312static persistProp<T>(key: string, defaultValue: T): void 1313 1314将AppStorage中key对应的属性持久化到文件中。该接口的调用通常在访问AppStorage之前。 1315 1316确定属性的类型和值的顺序如下: 1317 13181. 如果PersistentStorage文件中存在key对应的属性,在AppStorage中创建对应的propName,并用在PersistentStorage中找到的key的属性初始化。 1319 13202. 如果PersistentStorage文件中没有查询到key对应的属性,则在AppStorage中查找key对应的属性。如果找到key对应的属性,则将该属性持久化。 1321 13223. 如果AppStorage中也没查找到key对应的属性,则在AppStorage中创建key对应的属性。用defaultValue初始化其值,并将该属性持久化。 1323 1324根据上述的初始化流程,如果AppStorage中有该属性,则会使用其值,覆盖掉PersistentStorage文件中的值。由于AppStorage是内存内数据,该行为会导致数据丧失持久化能力。 1325 1326**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1327 1328**参数:** 1329 1330| 参数名 | 类型 | 必填 | 参数描述 | 1331| ------------ | ------ | ---- | ------------------------------------------------------------ | 1332| key | string | 是 | 属性名。 | 1333| defaultValue | T | 是 | 在PersistentStorage和AppStorage中未查询到时,则使用默认值进行初始化。不允许为undefined和null。 | 1334 1335 1336**示例:** 1337 1338 1339persistProp具体使用,见[从AppStorage中访问PersistentStorage初始化的属性](../../../quick-start/arkts-persiststorage.md#从appstorage中访问persistentstorage初始化的属性) 1340 1341 1342### deleteProp<sup>10+</sup> 1343 1344static deleteProp(key: string): void 1345 1346persistProp的逆向操作。将key对应的属性从PersistentStorage中删除,后续AppStorage的操作,对PersistentStorage不会再有影响。 1347 1348**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1349 1350**参数:** 1351 1352| 参数名 | 类型 | 必填 | 参数描述 | 1353| ---- | ------ | ---- | ----------------------- | 1354| key | string | 是 | PersistentStorage中的属性名。 | 1355 1356**示例:** 1357```ts 1358PersistentStorage.deleteProp('highScore'); 1359``` 1360 1361 1362### persistProps<sup>10+</sup> 1363 1364static persistProps(props: PersistPropsOptions[]): void 1365 1366行为和persistProp类似,不同在于可以一次性持久化多个数据,适合在应用启动的时候初始化。 1367 1368**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1369 1370**参数:** 1371 1372| 参数名 | 类型 | 必填 | 参数描述 | 1373| ---------- | ---------------------------------------- | ---- | ---------------------------------------- | 1374| props | [PersistPropsOptions](#persistpropsoptions)[] | 是 | 持久化数组。 | 1375 1376**示例:** 1377```ts 1378PersistentStorage.persistProps([{ key: 'highScore', defaultValue: '0' }, { key: 'wightScore', defaultValue: '1' }]); 1379``` 1380 1381 1382### keys<sup>10+</sup> 1383 1384static keys(): Array<string> 1385 1386返回所有持久化属性的属性名的数组。 1387 1388**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1389 1390**返回值:** 1391 1392| 类型 | 描述 | 1393| ------------------- | ---------------------------------- | 1394| Array<string> | 返回所有持久化属性的属性名的数组。 | 1395 1396**示例:** 1397```ts 1398let keys: Array<string> = PersistentStorage.keys(); 1399``` 1400 1401 1402### PersistProp<sup>(deprecated)</sup> 1403 1404static PersistProp<T>(key: string, defaultValue: T): void 1405 1406将AppStorage中key对应的属性持久化到文件中。该接口的调用通常在访问AppStorage之前。 1407 1408确定属性的类型和值的顺序如下: 1409 14101. 如果PersistentStorage文件中存在key对应的属性,在AppStorage中创建对应的propName,并用在PersistentStorage中找到的key的属性初始化。 1411 14122. 如果PersistentStorage文件中没有查询到key对应的属性,则在AppStorage中查找key对应的属性。如果找到key对应的属性,则将该属性持久化。 1413 14143. 如果AppStorage也没查找到key对应的属性,则在AppStorage中创建key对应的属性。用defaultValue初始化其值,并将该属性持久化。 1415 1416根据上述的初始化流程,如果AppStorage中有该属性,则会使用其值,覆盖掉PersistentStorage文件中的值。由于AppStorage是内存内数据,该行为会导致数据丧失持久化能力。 1417 1418 1419> **说明:**<br/> 1420> 从API version 10开始废弃,推荐使用[persistProp10+](#persistprop10)替代。 1421 1422**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1423 1424**参数:** 1425 1426| 参数名 | 类型 | 必填 | 参数描述 | 1427| ------------ | ------ | ---- | ------------------------------------------------------------ | 1428| key | string | 是 | 属性名。 | 1429| defaultValue | T | 是 | 在PersistentStorage和AppStorage中未查询到时,则使用默认值进行初始化。不允许为undefined和null。 | 1430 1431 1432**示例:** 1433 1434 1435```ts 1436PersistentStorage.PersistProp('highScore', '0'); 1437``` 1438 1439 1440### DeleteProp<sup>(deprecated)</sup> 1441 1442static DeleteProp(key: string): void 1443 1444PersistProp的逆向操作。将key对应的属性从PersistentStorage中删除,后续AppStorage的操作,对PersistentStorage不会再有影响。 1445 1446 1447> **说明:**<br/> 1448> 从API version 10开始废弃,推荐使用[deleteProp10+](#deleteprop10)替代。 1449 1450**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1451 1452**参数:** 1453 1454| 参数名 | 类型 | 必填 | 参数描述 | 1455| ---- | ------ | ---- | ----------------------- | 1456| key | string | 是 | PersistentStorage中的属性名。 | 1457 1458**示例:** 1459```ts 1460PersistentStorage.DeleteProp('highScore'); 1461``` 1462 1463 1464### PersistProps<sup>(deprecated)</sup> 1465 1466static PersistProps(properties: {key: string, defaultValue: any;}[]): void 1467 1468行为和PersistProp类似,不同在于可以一次性持久化多个数据,适合在应用启动的时候初始化。 1469 1470> **说明:**<br/> 1471> 从API version 10开始废弃,推荐使用[persistProps10+](#persistprops10)替代。 1472 1473**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1474 1475**参数:** 1476 1477| 参数名 | 类型 | 必填 | 参数描述 | 1478| ---------- | ---------------------------------- | ---- | ------------------------------------------------------------ | 1479| properties | {key: string, defaultValue: any}[] | 是 | 持久化数组,启动key为属性名,defaultValue为默认值。规则同PersistProp。 | 1480 1481**示例:** 1482 1483```ts 1484PersistentStorage.PersistProps([{ key: 'highScore', defaultValue: '0' }, { key: 'wightScore', defaultValue: '1' }]); 1485``` 1486 1487 1488### Keys<sup>(deprecated)</sup> 1489 1490static Keys(): Array<string> 1491 1492返回所有持久化属性的属性名的数组。 1493 1494> **说明:**<br/> 1495> 从API version 10开始废弃,推荐使用[keys10+](#keys10-1)替代。 1496 1497**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1498 1499**返回值:** 1500 1501| 类型 | 描述 | 1502| ------------------- | ---------------------------------- | 1503| Array<string> | 返回所有持久化属性的属性名的数组。 | 1504 1505**示例:** 1506```ts 1507let keys: Array<string> = PersistentStorage.Keys(); 1508``` 1509 1510 1511## Environment 1512 1513 1514Environment具体使用说明,详见[Environment(设备环境查询)](../../../quick-start/arkts-environment.md) 1515 1516### EnvPropsOptions 1517 1518**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1519 1520**参数:** 1521 1522| 参数名 | 类型 | 必填 | 参数描述 | 1523| ------------ | --------------------------- | ---- | ------------------------------------------------------------ | 1524| key | string | 是 | 环境变量名称,支持的范围详见[内置环境变量说明](#内置环境变量说明)。 | 1525| defaultValue | number \| string \| boolean | 是 | 查询不到环境变量key,则使用defaultValue作为默认值存入AppStorage中。 | 1526 1527 1528### envProp<sup>10+</sup> 1529 1530static envProp<S>(key: string, value: S): boolean 1531 1532将Environment的内置环境变量key存入AppStorage中。如果系统中未查询到Environment环境变量key的值,则使用默认值value,存入成功,返回true。如果AppStorage中已经有对应的key,则返回false。 1533 1534所以建议在程序启动的时候调用该接口。 1535 1536在没有调用envProp的情况下,就使用AppStorage读取环境变量是错误的。 1537 1538**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1539 1540**参数:** 1541 1542| 参数名 | 类型 | 必填 | 参数描述 | 1543| ------ | ------ | ---- | ------------------------------------------------------------ | 1544| key | string | 是 | 环境变量名称,支持的范围详见[内置环境变量说明](#内置环境变量说明)。 | 1545| value | S | 是 | 查询不到环境变量key时,则使用value作为默认值存入AppStorage中。 | 1546 1547**返回值:** 1548 1549| 类型 | 描述 | 1550| ------- | ------------------------------------------------------------ | 1551| boolean | 如果key对应的属性在AppStorage中存在,则返回false。不存在则在AppStorage中用value作为默认值创建key对应的属性,返回true。 | 1552 1553**示例:** 1554 1555 1556envProp具体使用,见[从UI中访问Environment参数](../../../quick-start/arkts-environment.md#从ui中访问environment参数) 1557 1558 1559### envProps<sup>10+</sup> 1560 1561static envProps(props: EnvPropsOptions[]): void 1562 1563和[envProp](#envprop10)类似,不同点在于参数为数组,可以一次性初始化多个数据。建议在应用启动时调用,将系统环境变量批量存入AppStorage中。 1564 1565**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1566 1567**参数:** 1568 1569| 参数名 | 类型 | 必填 | 参数描述 | 1570| ------ | --------------------------------------------- | ---- | ------------------------------------ | 1571| props | [EnvPropsOptions](#envpropsoptions)[] | 是 | 系统环境变量和默认值的键值对的数组。 | 1572 1573**示例:** 1574```ts 1575Environment.envProps([{ key: 'accessibilityEnabled', defaultValue: 'default' }, { 1576 key: 'languageCode', 1577 defaultValue: 'en' 1578}, { key: 'prop', defaultValue: 'hhhh' }]); 1579``` 1580 1581 1582### keys<sup>10+</sup> 1583 1584static keys(): Array<string> 1585 1586返回环境变量的属性key的数组。 1587 1588**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1589 1590**返回值:** 1591 1592| 类型 | 描述 | 1593| ------------------- | ----------- | 1594| Array<string> | 返回关联的系统项数组。 | 1595 1596**示例:** 1597```ts 1598Environment.envProps([{ key: 'accessibilityEnabled', defaultValue: 'default' }, { 1599 key: 'languageCode', 1600 defaultValue: 'en' 1601}, { key: 'prop', defaultValue: 'hhhh' }]); 1602 1603let keys: Array<string> = Environment.keys(); // accessibilityEnabled, languageCode, prop 1604``` 1605 1606 1607### EnvProp<sup>(deprecated)</sup> 1608 1609static EnvProp<S>(key: string, value: S): boolean 1610 1611将Environment的内置环境变量key存入AppStorage中。如果系统中未查询到Environment环境变量key的值,则使用默认值value,存入成功,返回true。如果AppStorage中已经有对应的key,则返回false。 1612 1613所以建议在程序启动的时候调用该接口。 1614 1615在没有调用EnvProp的情况下,就使用AppStorage读取环境变量是错误的。 1616 1617> **说明:**<br/> 1618> 从API version 10开始废弃,推荐使用[envProp10+](#envprop10)替代。 1619 1620**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1621 1622**参数:** 1623 1624| 参数名 | 类型 | 必填 | 参数描述 | 1625| ------ | ------ | ---- | ------------------------------------------------------------ | 1626| key | string | 是 | 环境变量名称,支持的范围详见[内置环境变量说明](#内置环境变量说明)。 | 1627| value | S | 是 | 查询不到环境变量key,则使用value作为默认值存入AppStorage中。 | 1628 1629**返回值:** 1630 1631| 类型 | 描述 | 1632| ------- | ------------------------------------------------------------ | 1633| boolean | 如果key对应的属性在AppStorage中存在,则返回false。不存在则在AppStorage中用value作为默认值创建key对应的属性,返回true。 | 1634 1635**示例:** 1636 1637 1638```ts 1639Environment.EnvProp('accessibilityEnabled', 'default'); 1640``` 1641 1642 1643### EnvProps<sup>(deprecated)</sup> 1644 1645static EnvProps(props: {key: string; defaultValue: any;}[]): void 1646 1647和[EnvProp](#envpropdeprecated)类似,不同点在于参数为数组,可以一次性初始化多个数据。建议在应用启动时调用,将系统环境变量批量存入AppStorage中。 1648 1649> **说明:**<br/> 1650> 从API version 10开始废弃,推荐使用[envProps10+](#envprops10)替代。 1651 1652**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1653 1654**参数:** 1655 1656| 参数名 | 类型 | 必填 | 参数描述 | 1657| ------ | ------------------------------------------------- | ---- | ------------------------------------ | 1658| props | {key: string, defaultValue: any}[] | 是 | 系统环境变量和默认值的键值对的数组。 | 1659 1660**示例:** 1661```ts 1662Environment.EnvProps([{ key: 'accessibilityEnabled', defaultValue: 'default' }, { 1663 key: 'languageCode', 1664 defaultValue: 'en' 1665}, { key: 'prop', defaultValue: 'hhhh' }]); 1666``` 1667 1668 1669### Keys<sup>(deprecated)</sup> 1670 1671static Keys(): Array<string> 1672 1673返回环境变量的属性key的数组。 1674 1675> **说明:**<br/> 1676> 从API version 10开始废弃,推荐使用[keys10+](#keys10-2)替代。 1677 1678**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1679 1680**返回值:** 1681 1682| 类型 | 描述 | 1683| ------------------- | ----------- | 1684| Array<string> | 返回关联的系统项数组。 | 1685 1686**示例:** 1687 1688```ts 1689Environment.EnvProps([{ key: 'accessibilityEnabled', defaultValue: 'default' }, { 1690 key: 'languageCode', 1691 defaultValue: 'en' 1692}, { key: 'prop', defaultValue: 'hhhh' }]); 1693 1694let keys: Array<string> = Environment.Keys(); // accessibilityEnabled, languageCode, prop 1695``` 1696 1697 1698## 内置环境变量说明 1699 1700| key | 类型 | 说明 | 1701| -------------------- | --------------- | ------------------------------------------------------------ | 1702| accessibilityEnabled | string | 无障碍屏幕朗读是否启用。当无法获取环境变量中的accessibilityEnabled的值时,将通过envProp、envProps等接口传入的开发者指定的默认值添加到AppStorage中。 | 1703| colorMode | ColorMode | 深浅色模式,可选值为:<br/>- ColorMode.LIGHT:浅色模式;<br/>- ColorMode.DARK:深色模式。 | 1704| fontScale | number | 字体大小比例。 | 1705| fontWeightScale | number | 字重比例。 | 1706| layoutDirection | LayoutDirection | 布局方向类型,可选值为:<br/>- LayoutDirection.LTR:从左到右;<br/>- LayoutDirection.RTL:从右到左。 | 1707| languageCode | string | 当前系统语言,小写字母,例如zh。 |