1# @ohos.data.preferences (用户首选项) 2<!--Kit: ArkData--> 3<!--Subsystem: DistributedDataManager--> 4<!--Owner: @yanhuii--> 5<!--Designer: @houpengtao1--> 6<!--Tester: @yippo; @logic42--> 7<!--Adviser: @ge-yafang--> 8 9用户首选项为应用提供Key-Value键值型的数据处理能力,支持应用持久化轻量级数据,并对其修改和查询。 10 11数据存储采用键值对形式,键为字符串类型,值可为数字、字符、布尔类型及其对应的数组。 12 13用户首选项的持久化文件存储在[preferencesDir](../../application-models/application-context-stage.md#获取应用文件路径)路径下,创建preferences对象前,需要保证preferencesDir路径可读写。持久化文件存储路径中的[加密等级](../apis-ability-kit/js-apis-app-ability-contextConstant.md#areamode)会影响文件的可读写状态,路径访问限制详见[应用文件目录与应用文件路径](../../file-management/app-sandbox-directory.md#应用文件目录与应用文件路径)。 14 15> **说明:** 16> 17> 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 18> 19> 首选项无法保证进程并发安全,会有文件损坏和数据丢失的风险,不支持在多进程场景下使用。 20 21## 导入模块 22 23```ts 24import { preferences } from '@kit.ArkData'; 25``` 26 27## 常量 28 29**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 30 31**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core 32 33| 名称 | 类型 | 只读 | 说明 | 34| ---------------- | -------- | ---- | --------------------------------------- | 35| MAX_KEY_LENGTH | number | 是 | Key的最大长度限制为1024个字节。 | 36| MAX_VALUE_LENGTH | number | 是 | Value的最大长度限制为16MB。 | 37 38 39## preferences.getPreferences 40 41getPreferences(context: Context, name: string, callback: AsyncCallback<Preferences>): void 42 43获取Preferences实例,使用callback异步回调。 44 45**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 46 47**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core 48 49**参数:** 50 51| 参数名 | 类型 | 必填 | 说明 | 52| -------- | ------------------------------------------------ | ---- | ------------------------------------------------------------ | 53| context | Context | 是 | 应用上下文。<br>FA模型的应用Context定义见[Context](../apis-ability-kit/js-apis-inner-app-context.md)。<br>Stage模型的应用Context定义见[Context](../apis-ability-kit/js-apis-inner-application-uiAbilityContext.md)。 | 54| name | string | 是 | Preferences实例的名称。 | 55| callback | AsyncCallback<[Preferences](#preferences)> | 是 | 回调函数。当获取Preferences实例成功,err为undefined,返回Preferences实例;否则err为错误对象。 | 56 57**错误码:** 58 59以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[用户首选项错误码](errorcode-preferences.md)。 60 61| 错误码ID | 错误信息 | 62| -------- | ------------------------------ | 63| 401 | Parameter error. Possible causes:1. Mandatory parameters are left unspecified;2. Incorrect parameter types;3. Parameter verification failed. | 64| 15500000 | Inner error. | 65 66**示例:** 67 68FA模型示例: 69 70<!--code_no_check_fa--> 71```ts 72import { featureAbility } from '@kit.AbilityKit'; 73import { BusinessError } from '@kit.BasicServicesKit'; 74 75let context = featureAbility.getContext(); 76let dataPreferences: preferences.Preferences | null = null; 77 78preferences.getPreferences(context, 'myStore', (err: BusinessError, val: preferences.Preferences) => { 79 if (err) { 80 console.error("Failed to get preferences. code =" + err.code + ", message =" + err.message); 81 return; 82 } 83 dataPreferences = val; 84 console.info("Succeeded in getting preferences."); 85}) 86``` 87 88Stage模型示例: 89 90```ts 91import { UIAbility } from '@kit.AbilityKit'; 92import { BusinessError } from '@kit.BasicServicesKit'; 93import { window } from '@kit.ArkUI'; 94 95let dataPreferences: preferences.Preferences | null = null; 96 97class EntryAbility extends UIAbility { 98 onWindowStageCreate(windowStage: window.WindowStage) { 99 preferences.getPreferences(this.context, 'myStore', (err: BusinessError, val: preferences.Preferences) => { 100 if (err) { 101 console.error("Failed to get preferences. code =" + err.code + ", message =" + err.message); 102 return; 103 } 104 dataPreferences = val; 105 console.info("Succeeded in getting preferences."); 106 }) 107 } 108} 109``` 110 111## preferences.getPreferences 112 113getPreferences(context: Context, name: string): Promise<Preferences> 114 115获取Preferences实例,使用Promise异步回调。 116 117**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 118 119**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core 120 121**参数:** 122 123| 参数名 | 类型 | 必填 | 说明 | 124| ------- | ------------------------------------- | ---- | ----------------------- | 125| context | Context | 是 | 应用上下文。<br>FA模型的应用Context定义见[Context](../apis-ability-kit/js-apis-inner-app-context.md)。<br>Stage模型的应用Context定义见[Context](../apis-ability-kit/js-apis-inner-application-uiAbilityContext.md)。 | 126| name | string | 是 | Preferences实例的名称。 | 127 128**返回值:** 129 130| 类型 | 说明 | 131| ------------------------------------------ | ---------------------------------- | 132| Promise<[Preferences](#preferences)> | Promise对象,返回Preferences实例。 | 133 134**错误码:** 135 136以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[用户首选项错误码](errorcode-preferences.md)。 137 138| 错误码ID | 错误信息 | 139| -------- | ------------------------------ | 140| 401 | Parameter error. Possible causes:1. Mandatory parameters are left unspecified;2. Incorrect parameter types;3. Parameter verification failed. | 141| 15500000 | Inner error. | 142 143**示例:** 144 145FA模型示例: 146 147<!--code_no_check_fa--> 148```ts 149// 获取context 150import { featureAbility } from '@kit.AbilityKit'; 151import { BusinessError } from '@kit.BasicServicesKit'; 152 153let context = featureAbility.getContext(); 154 155let dataPreferences: preferences.Preferences | null = null; 156let promise = preferences.getPreferences(context, 'myStore'); 157promise.then((object: preferences.Preferences) => { 158 dataPreferences = object; 159 console.info("Succeeded in getting preferences."); 160}).catch((err: BusinessError) => { 161 console.error("Failed to get preferences. code =" + err.code + ", message =" + err.message); 162}) 163``` 164 165Stage模型示例: 166 167```ts 168import { UIAbility } from '@kit.AbilityKit'; 169import { BusinessError } from '@kit.BasicServicesKit'; 170import { window } from '@kit.ArkUI'; 171 172let dataPreferences: preferences.Preferences | null = null; 173 174class EntryAbility extends UIAbility { 175 onWindowStageCreate(windowStage: window.WindowStage) { 176 let promise = preferences.getPreferences(this.context, 'myStore'); 177 promise.then((object: preferences.Preferences) => { 178 dataPreferences = object; 179 console.info("Succeeded in getting preferences."); 180 }).catch((err: BusinessError) => { 181 console.error("Failed to get preferences. code =" + err.code + ", message =" + err.message); 182 }) 183 } 184} 185``` 186 187## preferences.getPreferences<sup>10+</sup> 188 189getPreferences(context: Context, options: Options, callback: AsyncCallback<Preferences>): void 190 191获取Preferences实例,使用callback异步回调。 192 193**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 194 195**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core 196 197**参数:** 198 199| 参数名 | 类型 | 必填 | 说明 | 200| -------- | --------------------------------------------- | ---- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | 201| context | Context | 是 | 应用上下文。<br>FA模型的应用Context定义见[Context](../apis-ability-kit/js-apis-inner-app-context.md)。<br>Stage模型的应用Context定义见[Context](../apis-ability-kit/js-apis-inner-application-uiAbilityContext.md)。 | 202| options | [Options](#options10) | 是 | 与Preferences实例相关的配置选项。 | 203| callback | AsyncCallback<[Preferences](#preferences)> | 是 | 回调函数。当获取Preferences实例成功,err为undefined,返回Preferences实例;否则err为错误对象。 | 204 205**错误码:** 206 207以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[用户首选项错误码](errorcode-preferences.md)。 208 209| 错误码ID | 错误信息 | 210| -------- | ------------------------------ | 211| 401 | Parameter error. Possible causes:1. Mandatory parameters are left unspecified;2. Incorrect parameter types;3. Parameter verification failed. | 212| 801 | Capability not supported. | 213| 15500000 | Inner error. | 214| 15501001 | The operations is supported in stage mode only. | 215| 15501002 | Invalid dataGroupId. | 216 217**示例:** 218 219FA模型示例: 220 221<!--code_no_check_fa--> 222```ts 223// 获取context 224import { featureAbility } from '@kit.AbilityKit'; 225import { BusinessError } from '@kit.BasicServicesKit'; 226 227let context = featureAbility.getContext(); 228let dataPreferences: preferences.Preferences | null = null; 229 230let options: preferences.Options = { name: 'myStore' }; 231preferences.getPreferences(context, options, (err: BusinessError, val: preferences.Preferences) => { 232 if (err) { 233 console.error("Failed to get preferences. code =" + err.code + ", message =" + err.message); 234 return; 235 } 236 dataPreferences = val; 237 console.info("Succeeded in getting preferences."); 238}) 239``` 240 241 242Stage模型示例: 243 244```ts 245import { UIAbility } from '@kit.AbilityKit'; 246import { BusinessError } from '@kit.BasicServicesKit'; 247import { window } from '@kit.ArkUI'; 248 249let dataPreferences: preferences.Preferences | null = null; 250 251class EntryAbility extends UIAbility { 252 onWindowStageCreate(windowStage: window.WindowStage) { 253 let options: preferences.Options = { name: 'myStore' }; 254 preferences.getPreferences(this.context, options, (err: BusinessError, val: preferences.Preferences) => { 255 if (err) { 256 console.error("Failed to get preferences. code =" + err.code + ", message =" + err.message); 257 return; 258 } 259 dataPreferences = val; 260 console.info("Succeeded in getting preferences."); 261 }) 262 } 263} 264``` 265 266## preferences.getPreferences<sup>10+</sup> 267 268getPreferences(context: Context, options: Options): Promise<Preferences> 269 270获取Preferences实例,使用Promise异步回调。 271 272**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 273 274**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core 275 276**参数:** 277 278| 参数名 | 类型 | 必填 | 说明 | 279| ------- | ---------------- | ---- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | 280| context | Context | 是 | 应用上下文。<br>FA模型的应用Context定义见[Context](../apis-ability-kit/js-apis-inner-app-context.md)。<br>Stage模型的应用Context定义见[Context](../apis-ability-kit/js-apis-inner-application-uiAbilityContext.md)。 | 281| options | [Options](#options10) | 是 | 与Preferences实例相关的配置选项。 | 282 283**返回值:** 284 285| 类型 | 说明 | 286| --------------------------------------- | ---------------------------------- | 287| Promise<[Preferences](#preferences)> | Promise对象,返回Preferences实例。 | 288 289**错误码:** 290 291以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[用户首选项错误码](errorcode-preferences.md)。 292 293| 错误码ID | 错误信息 | 294| -------- | ------------------------------ | 295| 401 | Parameter error. Possible causes:1. Mandatory parameters are left unspecified;2. Incorrect parameter types;3. Parameter verification failed. | 296| 801 | Capability not supported. | 297| 15500000 | Inner error. | 298| 15501001 | The operations is supported in stage mode only. | 299| 15501002 | Invalid dataGroupId. | 300 301**示例:** 302 303FA模型示例: 304 305<!--code_no_check_fa--> 306```ts 307// 获取context 308import { featureAbility } from '@kit.AbilityKit'; 309import { BusinessError } from '@kit.BasicServicesKit'; 310 311let context = featureAbility.getContext(); 312 313let dataPreferences: preferences.Preferences | null = null; 314let options: preferences.Options = { name: 'myStore' }; 315let promise = preferences.getPreferences(context, options); 316promise.then((object: preferences.Preferences) => { 317 dataPreferences = object; 318 console.info("Succeeded in getting preferences."); 319}).catch((err: BusinessError) => { 320 console.error("Failed to get preferences. code =" + err.code + ", message =" + err.message); 321}) 322``` 323 324Stage模型示例: 325 326```ts 327import { UIAbility } from '@kit.AbilityKit'; 328import { BusinessError } from '@kit.BasicServicesKit'; 329import { window } from '@kit.ArkUI'; 330 331let dataPreferences: preferences.Preferences | null = null; 332 333class EntryAbility extends UIAbility { 334 onWindowStageCreate(windowStage: window.WindowStage) { 335 let options: preferences.Options = { name: 'myStore' }; 336 let promise = preferences.getPreferences(this.context, options); 337 promise.then((object: preferences.Preferences) => { 338 dataPreferences = object; 339 console.info("Succeeded in getting preferences."); 340 }).catch((err: BusinessError) => { 341 console.error("Failed to get preferences. code =" + err.code + ", message =" + err.message); 342 }) 343 } 344} 345``` 346 347## preferences.getPreferencesSync<sup>10+</sup> 348 349getPreferencesSync(context: Context, options: Options): Preferences 350 351获取Preferences实例,此为同步接口。 352 353**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 354 355**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core 356 357**参数:** 358 359| 参数名 | 类型 | 必填 | 说明 | 360| ------- | --------------------- | ---- | ------------------------------------------------------------ | 361| context | Context | 是 | 应用上下文。<br>FA模型的应用Context定义见[Context](../apis-ability-kit/js-apis-inner-app-context.md)。<br>Stage模型的应用Context定义见[Context](../apis-ability-kit/js-apis-inner-application-uiAbilityContext.md)。 | 362| options | [Options](#options10) | 是 | 与Preferences实例相关的配置选项。 | 363 364**返回值:** 365 366| 类型 | 说明 | 367| --------------------------- | --------------------- | 368| [Preferences](#preferences) | 返回Preferences实例。 | 369 370**错误码:** 371 372以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[用户首选项错误码](errorcode-preferences.md)。 373 374| 错误码ID | 错误信息 | 375| -------- | ------------------------------ | 376| 401 | Parameter error. Possible causes:1. Mandatory parameters are left unspecified;2. Incorrect parameter types;3. Parameter verification failed. | 377| 801 | Capability not supported. | 378| 15500000 | Inner error. | 379| 15501001 | The operations is supported in stage mode only. | 380| 15501002 | Invalid dataGroupId. | 381 382**示例:** 383 384FA模型示例: 385 386<!--code_no_check_fa--> 387```ts 388// 获取context 389import { featureAbility } from '@kit.AbilityKit'; 390 391let context = featureAbility.getContext(); 392let dataPreferences: preferences.Preferences | null = null; 393 394let options: preferences.Options = { name: 'myStore' }; 395dataPreferences = preferences.getPreferencesSync(context, options); 396``` 397 398Stage模型示例: 399 400```ts 401import { UIAbility } from '@kit.AbilityKit'; 402import { window } from '@kit.ArkUI'; 403 404let dataPreferences: preferences.Preferences | null = null; 405 406class EntryAbility extends UIAbility { 407 onWindowStageCreate(windowStage: window.WindowStage) { 408 let options: preferences.Options = { name: 'myStore' }; 409 dataPreferences = preferences.getPreferencesSync(this.context, options); 410 } 411} 412``` 413 414## preferences.deletePreferences 415 416deletePreferences(context: Context, name: string, callback: AsyncCallback<void>): void 417 418从缓存中删除指定的Preferences实例,若Preferences实例有对应的持久化文件,则同时删除其持久化文件。使用callback异步回调。 419 420调用该接口后,不建议再使用旧的Preferences实例进行数据操作,否则会导致数据一致性问题,应将Preferences实例置为null,系统会统一回收。 421 422不支持该接口与其他preference接口并发调用。 423 424**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 425 426**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core 427 428**参数:** 429 430| 参数名 | 类型 | 必填 | 说明 | 431| -------- | ------------------------------------- | ---- | ---------------------------------------------------- | 432| context | Context | 是 | 应用上下文。<br>FA模型的应用Context定义见[Context](../apis-ability-kit/js-apis-inner-app-context.md)。<br>Stage模型的应用Context定义见[Context](../apis-ability-kit/js-apis-inner-application-uiAbilityContext.md)。 | 433| name | string | 是 | Preferences实例的名称。 | 434| callback | AsyncCallback<void> | 是 | 回调函数。当移除成功,err为undefined,否则为错误对象。 | 435 436**错误码:** 437 438以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[用户首选项错误码](errorcode-preferences.md)。 439 440| 错误码ID | 错误信息 | 441| -------- | ------------------------------ | 442| 401 | Parameter error. Possible causes:1. Mandatory parameters are left unspecified;2. Incorrect parameter types;3. Parameter verification failed. | 443| 15500000 | Inner error. | 444| 15500010 | Failed to delete the user preferences persistence file. | 445 446**示例:** 447 448FA模型示例: 449 450<!--code_no_check_fa--> 451```ts 452// 获取context 453import { featureAbility } from '@kit.AbilityKit'; 454import { BusinessError } from '@kit.BasicServicesKit'; 455 456let context = featureAbility.getContext(); 457 458preferences.deletePreferences(context, 'myStore', (err: BusinessError) => { 459 if (err) { 460 console.error("Failed to delete preferences. code =" + err.code + ", message =" + err.message); 461 return; 462 } 463 console.info("Succeeded in deleting preferences."); 464}) 465``` 466 467Stage模型示例: 468 469```ts 470import { UIAbility } from '@kit.AbilityKit'; 471import { BusinessError } from '@kit.BasicServicesKit'; 472import { window } from '@kit.ArkUI'; 473 474class EntryAbility extends UIAbility { 475 onWindowStageCreate(windowStage: window.WindowStage) { 476 preferences.deletePreferences(this.context, 'myStore', (err: BusinessError) => { 477 if (err) { 478 console.error("Failed to delete preferences. code =" + err.code + ", message =" + err.message); 479 return; 480 } 481 console.info("Succeeded in deleting preferences."); 482 }) 483 } 484} 485``` 486 487## preferences.deletePreferences 488 489deletePreferences(context: Context, name: string): Promise<void> 490 491从缓存中删除指定的Preferences实例,若Preferences实例有对应的持久化文件,则同时删除其持久化文件。使用Promise异步回调。 492 493调用该接口后,不建议再使用旧的Preferences实例进行数据操作,否则会导致数据一致性问题,应将Preferences实例置为null,系统会统一回收。 494 495不支持该接口与其他preference接口并发调用。 496 497**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 498 499**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core 500 501**参数:** 502 503| 参数名 | 类型 | 必填 | 说明 | 504| ------- | ------------------------------------- | ---- | ----------------------- | 505| context | Context | 是 | 应用上下文。<br>FA模型的应用Context定义见[Context](../apis-ability-kit/js-apis-inner-app-context.md)。<br>Stage模型的应用Context定义见[Context](../apis-ability-kit/js-apis-inner-application-uiAbilityContext.md)。 | 506| name | string | 是 | Preferences实例的名称。 | 507 508**返回值:** 509 510| 类型 | 说明 | 511| ------------------- | ------------------------- | 512| Promise<void> | 无返回结果的Promise对象。 | 513 514**错误码:** 515 516以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[用户首选项错误码](errorcode-preferences.md)。 517 518| 错误码ID | 错误信息 | 519| -------- | ------------------------------ | 520| 401 | Parameter error. Possible causes:1. Mandatory parameters are left unspecified;2. Incorrect parameter types;3. Parameter verification failed. | 521| 15500000 | Inner error. | 522| 15500010 | Failed to delete the user preferences persistence file. | 523 524**示例:** 525 526FA模型示例: 527 528<!--code_no_check_fa--> 529```ts 530// 获取context 531import { featureAbility } from '@kit.AbilityKit'; 532import { BusinessError } from '@kit.BasicServicesKit'; 533 534let context = featureAbility.getContext(); 535 536let promise = preferences.deletePreferences(context, 'myStore'); 537promise.then(() => { 538 console.info("Succeeded in deleting preferences."); 539}).catch((err: BusinessError) => { 540 console.error("Failed to delete preferences. code =" + err.code + ", message =" + err.message); 541}) 542``` 543 544Stage模型示例: 545 546```ts 547import { UIAbility } from '@kit.AbilityKit'; 548import { BusinessError } from '@kit.BasicServicesKit'; 549import { window } from '@kit.ArkUI'; 550 551class EntryAbility extends UIAbility { 552 onWindowStageCreate(windowStage: window.WindowStage) { 553 let promise = preferences.deletePreferences(this.context, 'myStore'); 554 promise.then(() => { 555 console.info("Succeeded in deleting preferences."); 556 }).catch((err: BusinessError) => { 557 console.error("Failed to delete preferences. code =" + err.code + ", message =" + err.message); 558 }) 559 } 560} 561``` 562 563## preferences.deletePreferences<sup>10+</sup> 564 565deletePreferences(context: Context, options: Options, callback: AsyncCallback<void>): void 566 567从缓存中删除指定的Preferences实例,若Preferences实例有对应的持久化文件,则同时删除其持久化文件。使用callback异步回调。 568 569调用该接口后,不建议再使用旧的Preferences实例进行数据操作,否则会导致数据一致性问题,应将Preferences实例置为null,系统会统一回收。 570 571不支持该接口与其他preference接口并发调用。 572 573**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 574 575**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core 576 577**参数:** 578 579| 参数名 | 类型 | 必填 | 说明 | 580| -------- | ------------------------- | ---- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | 581| context | Context | 是 | 应用上下文。<br>FA模型的应用Context定义见[Context](../apis-ability-kit/js-apis-inner-app-context.md)。<br>Stage模型的应用Context定义见[Context](../apis-ability-kit/js-apis-inner-application-uiAbilityContext.md)。 | 582| options | [Options](#options10) | 是 | 与Preferences实例相关的配置选项。 | 583| callback | AsyncCallback<void> | 是 | 回调函数。当移除成功,err为undefined,否则为错误对象。 | 584 585**错误码:** 586 587以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[用户首选项错误码](errorcode-preferences.md)。 588 589| 错误码ID | 错误信息 | 590| -------- | ------------------------------ | 591| 401 | Parameter error. Possible causes:1. Mandatory parameters are left unspecified;2. Incorrect parameter types;3. Parameter verification failed. | 592| 801 | Capability not supported. | 593| 15500000 | Inner error. | 594| 15500010 | Failed to delete the user preferences persistence file. | 595| 15501001 | The operations is supported in stage mode only. | 596| 15501002 | Invalid dataGroupId. | 597 598**示例:** 599 600FA模型示例: 601 602<!--code_no_check_fa--> 603```ts 604// 获取context 605import { featureAbility } from '@kit.AbilityKit'; 606import { BusinessError } from '@kit.BasicServicesKit'; 607 608let context = featureAbility.getContext(); 609 610let options: preferences.Options = { name: 'myStore' }; 611preferences.deletePreferences(context, options, (err: BusinessError) => { 612 if (err) { 613 console.error("Failed to delete preferences. code =" + err.code + ", message =" + err.message); 614 return; 615 } 616 console.info("Succeeded in deleting preferences."); 617}) 618``` 619 620Stage模型示例: 621 622```ts 623import { UIAbility } from '@kit.AbilityKit'; 624import { BusinessError } from '@kit.BasicServicesKit'; 625import { window } from '@kit.ArkUI'; 626 627class EntryAbility extends UIAbility { 628 onWindowStageCreate(windowStage: window.WindowStage) { 629 let options: preferences.Options = { name: 'myStore' }; 630 preferences.deletePreferences(this.context, options, (err: BusinessError) => { 631 if (err) { 632 console.error("Failed to delete preferences. code =" + err.code + ", message =" + err.message); 633 return; 634 } 635 console.info("Succeeded in deleting preferences."); 636 }) 637 } 638} 639``` 640 641 642## preferences.deletePreferences<sup>10+</sup> 643 644deletePreferences(context: Context, options: Options): Promise<void> 645 646从缓存中删除指定的Preferences实例,若Preferences实例有对应的持久化文件,则同时删除其持久化文件。使用Promise异步回调。 647 648调用该接口后,不建议再使用旧的Preferences实例进行数据操作,否则会导致数据一致性问题,应将Preferences实例置为null,系统会统一回收。 649 650不支持该接口与其他preference接口并发调用。 651 652**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 653 654**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core 655 656**参数:** 657 658| 参数名 | 类型 | 必填 | 说明 | 659| ------- | ---------------- | ---- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | 660| context | Context | 是 | 应用上下文。<br>FA模型的应用Context定义见[Context](../apis-ability-kit/js-apis-inner-app-context.md)。<br>Stage模型的应用Context定义见[Context](../apis-ability-kit/js-apis-inner-application-uiAbilityContext.md)。 | 661| options | [Options](#options10) | 是 | 与Preferences实例相关的配置选项。 | 662 663**返回值:** 664 665| 类型 | 说明 | 666| ------------------- | ------------------------- | 667| Promise<void> | 无返回结果的Promise对象。 | 668 669**错误码:** 670 671以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[用户首选项错误码](errorcode-preferences.md)。 672 673| 错误码ID | 错误信息 | 674| -------- | ------------------------------ | 675| 401 | Parameter error. Possible causes:1. Mandatory parameters are left unspecified;2. Incorrect parameter types;3. Parameter verification failed. | 676| 801 | Capability not supported. | 677| 15500000 | Inner error. | 678| 15500010 | Failed to delete the user preferences persistence file. | 679| 15501001 | The operations is supported in stage mode only. | 680| 15501002 | Invalid dataGroupId. | 681 682**示例:** 683 684FA模型示例: 685 686<!--code_no_check_fa--> 687```ts 688// 获取context 689import { featureAbility } from '@kit.AbilityKit'; 690import { BusinessError } from '@kit.BasicServicesKit'; 691 692let context = featureAbility.getContext(); 693 694let options: preferences.Options = { name: 'myStore' }; 695let promise = preferences.deletePreferences(context, options); 696promise.then(() => { 697 console.info("Succeeded in deleting preferences."); 698}).catch((err: BusinessError) => { 699 console.error("Failed to delete preferences. code =" + err.code + ", message =" + err.message); 700}) 701``` 702 703Stage模型示例: 704 705```ts 706import { UIAbility } from '@kit.AbilityKit'; 707import { BusinessError } from '@kit.BasicServicesKit'; 708import { window } from '@kit.ArkUI'; 709 710class EntryAbility extends UIAbility { 711 onWindowStageCreate(windowStage: window.WindowStage) { 712 let options: preferences.Options = { name: 'myStore' }; 713 let promise = preferences.deletePreferences(this.context, options); 714 promise.then(() => { 715 console.info("Succeeded in deleting preferences."); 716 }).catch((err: BusinessError) => { 717 console.error("Failed to delete preferences. code =" + err.code + ", message =" + err.message); 718 }) 719 } 720} 721``` 722 723 724## preferences.removePreferencesFromCache 725 726removePreferencesFromCache(context: Context, name: string, callback: AsyncCallback<void>): void 727 728从缓存中移除指定的Preferences实例,使用callback异步回调。 729 730应用首次调用[getPreferences](#preferencesgetpreferences)接口获取某个Preferences实例后,该实例会被缓存起来,后续调用[getPreferences](#preferencesgetpreferences)时不会再次从持久化文件中读取,直接从缓存中获取Preferences实例。调用此接口移除缓存中的实例之后,再次getPreferences将会重新读取持久化文件,生成新的Preferences实例。 731 732调用该接口后,不建议再使用旧的Preferences实例进行数据操作,否则会导致数据一致性问题,应将Preferences实例置为null,系统会统一回收。 733 734若使用[GSKV存储模式](../../database/data-persistence-by-preferences.md#gskv存储),推荐在进程退出时手动调用一次该接口。此操作会将数据缓存页写入磁盘,可一定程度上减少下一次调用getPreferences接口时的耗时。否则,下一次调用getPreferences接口时底层需要进行数据恢复,数据恢复的耗时取决于未写入磁盘的数据缓存页数量。 735 736**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 737 738**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core 739 740**参数:** 741 742| 参数名 | 类型 | 必填 | 说明 | 743| -------- | ------------------------------------- | ---- | ---------------------------------------------------- | 744| context | Context | 是 | 应用上下文。<br>FA模型的应用Context定义见[Context](../apis-ability-kit/js-apis-inner-app-context.md)。<br>Stage模型的应用Context定义见[Context](../apis-ability-kit/js-apis-inner-application-uiAbilityContext.md)。 | 745| name | string | 是 | Preferences实例的名称。 | 746| callback | AsyncCallback<void> | 是 | 回调函数。当移除成功,err为undefined,否则为错误对象。 | 747 748**错误码:** 749 750以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[用户首选项错误码](errorcode-preferences.md)。 751 752| 错误码ID | 错误信息 | 753| -------- | ------------------------------ | 754| 401 | Parameter error. Possible causes:1. Mandatory parameters are left unspecified;2. Incorrect parameter types;3. Parameter verification failed. | 755| 15500000 | Inner error. | 756 757**示例:** 758 759FA模型示例: 760 761<!--code_no_check_fa--> 762```ts 763// 获取context 764import { featureAbility } from '@kit.AbilityKit'; 765import { BusinessError } from '@kit.BasicServicesKit'; 766 767let context = featureAbility.getContext(); 768preferences.removePreferencesFromCache(context, 'myStore', (err: BusinessError) => { 769 if (err) { 770 console.error("Failed to remove preferences. code =" + err.code + ", message =" + err.message); 771 return; 772 } 773 console.info("Succeeded in removing preferences."); 774}) 775``` 776 777Stage模型示例: 778 779```ts 780import { UIAbility } from '@kit.AbilityKit'; 781import { BusinessError } from '@kit.BasicServicesKit'; 782import { window } from '@kit.ArkUI'; 783 784class EntryAbility extends UIAbility { 785 onWindowStageCreate(windowStage: window.WindowStage) { 786 preferences.removePreferencesFromCache(this.context, 'myStore', (err: BusinessError) => { 787 if (err) { 788 console.error("Failed to remove preferences. code =" + err.code + ", message =" + err.message); 789 return; 790 } 791 console.info("Succeeded in removing preferences."); 792 }) 793 } 794} 795``` 796 797## preferences.removePreferencesFromCache 798 799removePreferencesFromCache(context: Context, name: string): Promise<void> 800 801从缓存中移除指定的Preferences实例,使用Promise异步回调。 802 803应用首次调用[getPreferences](#preferencesgetpreferences)接口获取某个Preferences实例后,该实例会被缓存起来,后续调用[getPreferences](#preferencesgetpreferences)时不会再次从持久化文件中读取,直接从缓存中获取Preferences实例。调用此接口移除缓存中的实例之后,再次getPreferences将会重新读取持久化文件,生成新的Preferences实例。 804 805调用该接口后,不建议再使用旧的Preferences实例进行数据操作,否则会导致数据一致性问题,应将Preferences实例置为null,系统会统一回收。 806 807若使用[GSKV存储模式](../../database/data-persistence-by-preferences.md#gskv存储),推荐在进程退出时手动调用一次该接口。此操作会将数据缓存页写入磁盘,可一定程度上减少下一次调用getPreferences接口时的耗时。否则,下一次调用getPreferences接口时底层需要进行数据恢复,数据恢复的耗时取决于未写入磁盘的数据缓存页数量。 808 809**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 810 811**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core 812 813**参数:** 814 815| 参数名 | 类型 | 必填 | 说明 | 816| ------- | ------------------------------------- | ---- | ----------------------- | 817| context | Context | 是 | 应用上下文。<br>FA模型的应用Context定义见[Context](../apis-ability-kit/js-apis-inner-app-context.md)。<br>Stage模型的应用Context定义见[Context](../apis-ability-kit/js-apis-inner-application-uiAbilityContext.md)。 | 818| name | string | 是 | Preferences实例的名称。 | 819 820**返回值:** 821 822| 类型 | 说明 | 823| ------------------- | ------------------------- | 824| Promise<void> | 无返回结果的Promise对象。 | 825 826**错误码:** 827 828以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[用户首选项错误码](errorcode-preferences.md)。 829 830| 错误码ID | 错误信息 | 831| -------- | ------------------------------ | 832| 401 | Parameter error. Possible causes:1. Mandatory parameters are left unspecified;2. Incorrect parameter types;3. Parameter verification failed. | 833| 15500000 | Inner error. | 834 835**示例:** 836 837FA模型示例: 838 839<!--code_no_check_fa--> 840```ts 841// 获取context 842import { featureAbility } from '@kit.AbilityKit'; 843import { BusinessError } from '@kit.BasicServicesKit'; 844 845let context = featureAbility.getContext(); 846let promise = preferences.removePreferencesFromCache(context, 'myStore'); 847promise.then(() => { 848 console.info("Succeeded in removing preferences."); 849}).catch((err: BusinessError) => { 850 console.error("Failed to remove preferences. code =" + err.code + ", message =" + err.message); 851}) 852``` 853 854Stage模型示例: 855 856```ts 857import { UIAbility } from '@kit.AbilityKit'; 858import { BusinessError } from '@kit.BasicServicesKit'; 859import { window } from '@kit.ArkUI'; 860 861class EntryAbility extends UIAbility { 862 onWindowStageCreate(windowStage: window.WindowStage) { 863 let promise = preferences.removePreferencesFromCache(this.context, 'myStore'); 864 promise.then(() => { 865 console.info("Succeeded in removing preferences."); 866 }).catch((err: BusinessError) => { 867 console.error("Failed to remove preferences. code =" + err.code + ", message =" + err.message); 868 }) 869 } 870} 871``` 872 873## preferences.removePreferencesFromCacheSync<sup>10+</sup> 874 875removePreferencesFromCacheSync(context: Context, name: string): void 876 877从缓存中移除指定的Preferences实例,此为同步接口。 878 879应用首次调用[getPreferences](#preferencesgetpreferences)接口获取某个Preferences实例后,该实例会被缓存起来,后续调用[getPreferences](#preferencesgetpreferences)时不会再次从持久化文件中读取,直接从缓存中获取Preferences实例。调用此接口移除缓存中的实例之后,再次getPreferences将会重新读取持久化文件,生成新的Preferences实例。 880 881调用该接口后,不建议再使用旧的Preferences实例进行数据操作,否则会导致数据一致性问题,应将Preferences实例置为null,系统会统一回收。 882 883若使用[GSKV存储模式](../../database/data-persistence-by-preferences.md#gskv存储),推荐在进程退出时手动调用一次该接口。此操作会将数据缓存页写入磁盘,可一定程度上减少下一次调用getPreferences接口时的耗时。否则,下一次调用getPreferences接口时底层需要进行数据恢复,数据恢复的耗时取决于未写入磁盘的数据缓存页数量。 884 885**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 886 887**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core 888 889**参数:** 890 891| 参数名 | 类型 | 必填 | 说明 | 892| ------- | ------------------------------------- | ---- | ----------------------- | 893| context | Context | 是 | 应用上下文。<br>FA模型的应用Context定义见[Context](../apis-ability-kit/js-apis-inner-app-context.md)。<br>Stage模型的应用Context定义见[Context](../apis-ability-kit/js-apis-inner-application-uiAbilityContext.md)。 | 894| name | string | 是 | Preferences实例的名称。 | 895 896**错误码:** 897 898以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[用户首选项错误码](errorcode-preferences.md)。 899 900| 错误码ID | 错误信息 | 901| -------- | ------------------------------ | 902| 401 | Parameter error. Possible causes:1. Mandatory parameters are left unspecified;2. Incorrect parameter types;3. Parameter verification failed. | 903| 15500000 | Inner error. | 904 905**示例:** 906 907FA模型示例: 908 909<!--code_no_check_fa--> 910```ts 911// 获取context 912import { featureAbility } from '@kit.AbilityKit'; 913let context = featureAbility.getContext(); 914preferences.removePreferencesFromCacheSync(context, 'myStore'); 915``` 916 917Stage模型示例: 918 919```ts 920import { UIAbility } from '@kit.AbilityKit'; 921import { window } from '@kit.ArkUI'; 922 923class EntryAbility extends UIAbility { 924 onWindowStageCreate(windowStage: window.WindowStage) { 925 preferences.removePreferencesFromCacheSync(this.context, 'myStore'); 926 } 927} 928``` 929 930## preferences.removePreferencesFromCache<sup>10+</sup> 931 932removePreferencesFromCache(context: Context, options: Options, callback: AsyncCallback<void>): void 933 934从缓存中移除指定的Preferences实例,使用callback异步回调。 935 936应用首次调用[getPreferences](#preferencesgetpreferences)接口获取某个Preferences实例后,该实例会被缓存起来,后续调用[getPreferences](#preferencesgetpreferences)时不会再次从持久化文件中读取,直接从缓存中获取Preferences实例。调用此接口移除缓存中的实例之后,再次getPreferences将会重新读取持久化文件,生成新的Preferences实例。 937 938调用该接口后,不建议再使用旧的Preferences实例进行数据操作,否则会导致数据一致性问题,应将Preferences实例置为null,系统会统一回收。 939 940若使用[GSKV存储模式](../../database/data-persistence-by-preferences.md#gskv存储),推荐在进程退出时手动调用一次该接口。此操作会将数据缓存页写入磁盘,可一定程度上减少下一次调用getPreferences接口时的耗时。否则,下一次调用getPreferences接口时底层需要进行数据恢复,数据恢复的耗时取决于未写入磁盘的数据缓存页数量。 941 942**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 943 944**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core 945 946**参数:** 947 948| 参数名 | 类型 | 必填 | 说明 | 949| -------- | ------------------------- | ---- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | 950| context | Context | 是 | 应用上下文。<br>FA模型的应用Context定义见[Context](../apis-ability-kit/js-apis-inner-app-context.md)。<br>Stage模型的应用Context定义见[Context](../apis-ability-kit/js-apis-inner-application-uiAbilityContext.md)。 | 951| options | [Options](#options10) | 是 | 与Preferences实例相关的配置选项。 | 952| callback | AsyncCallback<void> | 是 | 回调函数。当移除成功,err为undefined,否则为错误对象。 | 953 954**错误码:** 955 956以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[用户首选项错误码](errorcode-preferences.md)。 957 958| 错误码ID | 错误信息 | 959| -------- | ------------------------------ | 960| 401 | Parameter error. Possible causes:1. Mandatory parameters are left unspecified;2. Incorrect parameter types;3. Parameter verification failed. | 961| 801 | Capability not supported. | 962| 15500000 | Inner error. | 963| 15501001 | The operations is supported in stage mode only. | 964| 15501002 | Invalid dataGroupId. | 965 966**示例:** 967 968FA模型示例: 969 970<!--code_no_check_fa--> 971```ts 972// 获取context 973import { featureAbility } from '@kit.AbilityKit'; 974import { BusinessError } from '@kit.BasicServicesKit'; 975 976let context = featureAbility.getContext(); 977let options: preferences.Options = { name: 'myStore' }; 978preferences.removePreferencesFromCache(context, options, (err: BusinessError) => { 979 if (err) { 980 console.error("Failed to remove preferences. code =" + err.code + ", message =" + err.message); 981 return; 982 } 983 console.info("Succeeded in removing preferences."); 984}) 985``` 986 987Stage模型示例: 988 989```ts 990import { UIAbility } from '@kit.AbilityKit'; 991import { BusinessError } from '@kit.BasicServicesKit'; 992import { window } from '@kit.ArkUI'; 993 994class EntryAbility extends UIAbility { 995 onWindowStageCreate(windowStage: window.WindowStage) { 996 let options: preferences.Options = { name: 'myStore' }; 997 preferences.removePreferencesFromCache(this.context, options, (err: BusinessError) => { 998 if (err) { 999 console.error("Failed to remove preferences. code =" + err.code + ", message =" + err.message); 1000 return; 1001 } 1002 console.info("Succeeded in removing preferences."); 1003 }) 1004 } 1005} 1006``` 1007 1008## preferences.removePreferencesFromCache<sup>10+</sup> 1009 1010removePreferencesFromCache(context: Context, options: Options): Promise<void> 1011 1012从缓存中移除指定的Preferences实例,使用Promise异步回调。 1013 1014应用首次调用[getPreferences](#preferencesgetpreferences)接口获取某个Preferences实例后,该实例会被缓存起来,后续调用[getPreferences](#preferencesgetpreferences)时不会再次从持久化文件中读取,直接从缓存中获取Preferences实例。调用此接口移除缓存中的实例之后,再次getPreferences将会重新读取持久化文件,生成新的Preferences实例。 1015 1016调用该接口后,不建议再使用旧的Preferences实例进行数据操作,否则会导致数据一致性问题,应将Preferences实例置为null,系统会统一回收。 1017 1018若使用[GSKV存储模式](../../database/data-persistence-by-preferences.md#gskv存储),推荐在进程退出时手动调用一次该接口。此操作会将数据缓存页写入磁盘,可一定程度上减少下一次调用getPreferences接口时的耗时。否则,下一次调用getPreferences接口时底层需要进行数据恢复,数据恢复的耗时取决于未写入磁盘的数据缓存页数量。 1019 1020**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1021 1022**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core 1023 1024**参数:** 1025 1026| 参数名 | 类型 | 必填 | 说明 | 1027| ------- | ---------------- | ---- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | 1028| context | Context | 是 | 应用上下文。<br>FA模型的应用Context定义见[Context](../apis-ability-kit/js-apis-inner-app-context.md)。<br>Stage模型的应用Context定义见[Context](../apis-ability-kit/js-apis-inner-application-uiAbilityContext.md)。 | 1029| options | [Options](#options10) | 是 | 与Preferences实例相关的配置选项。 | 1030 1031**返回值:** 1032 1033| 类型 | 说明 | 1034| ------------------- | ------------------------- | 1035| Promise<void> | 无返回结果的Promise对象。 | 1036 1037**错误码:** 1038 1039以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[用户首选项错误码](errorcode-preferences.md)。 1040 1041| 错误码ID | 错误信息 | 1042| -------- | ------------------------------ | 1043| 401 | Parameter error. Possible causes:1. Mandatory parameters are left unspecified;2. Incorrect parameter types;3. Parameter verification failed. | 1044| 801 | Capability not supported. | 1045| 15500000 | Inner error. | 1046| 15501001 | The operations is supported in stage mode only. | 1047| 15501002 | Invalid dataGroupId. | 1048 1049**示例:** 1050 1051FA模型示例: 1052 1053<!--code_no_check_fa--> 1054```ts 1055// 获取context 1056import { featureAbility } from '@kit.AbilityKit'; 1057import { BusinessError } from '@kit.BasicServicesKit'; 1058 1059let context = featureAbility.getContext(); 1060let options: preferences.Options = { name: 'myStore' }; 1061let promise = preferences.removePreferencesFromCache(context, options); 1062promise.then(() => { 1063 console.info("Succeeded in removing preferences."); 1064}).catch((err: BusinessError) => { 1065 console.error("Failed to remove preferences. code =" + err.code + ", message =" + err.message); 1066}) 1067``` 1068 1069Stage模型示例: 1070 1071```ts 1072import { UIAbility } from '@kit.AbilityKit'; 1073import { BusinessError } from '@kit.BasicServicesKit'; 1074import { window } from '@kit.ArkUI'; 1075 1076class EntryAbility extends UIAbility { 1077 onWindowStageCreate(windowStage: window.WindowStage) { 1078 let options: preferences.Options = { name: 'myStore' }; 1079 let promise = preferences.removePreferencesFromCache(this.context, options); 1080 promise.then(() => { 1081 console.info("Succeeded in removing preferences."); 1082 }).catch((err: BusinessError) => { 1083 console.error("Failed to remove preferences. code =" + err.code + ", message =" + err.message); 1084 }) 1085 } 1086} 1087``` 1088 1089## preferences.removePreferencesFromCacheSync<sup>10+</sup> 1090 1091removePreferencesFromCacheSync(context: Context, options: Options):void 1092 1093从缓存中移除指定的Preferences实例,此为同步接口。 1094 1095应用首次调用[getPreferences](#preferencesgetpreferences)接口获取某个Preferences实例后,该实例会被缓存起来,后续调用[getPreferences](#preferencesgetpreferences)时不会再次从持久化文件中读取,直接从缓存中获取Preferences实例。调用此接口移除缓存中的实例之后,再次getPreferences将会重新读取持久化文件,生成新的Preferences实例。 1096 1097调用该接口后,不建议再使用旧的Preferences实例进行数据操作,否则会导致数据一致性问题,应将Preferences实例置为null,系统会统一回收。 1098 1099若使用[GSKV存储模式](../../database/data-persistence-by-preferences.md#gskv存储),推荐在进程退出时手动调用一次该接口。此操作会将数据缓存页写入磁盘,可一定程度上减少下一次调用getPreferences接口时的耗时。否则,下一次调用getPreferences接口时底层需要进行数据恢复,数据恢复的耗时取决于未写入磁盘的数据缓存页数量。 1100 1101**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1102 1103**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core 1104 1105**参数:** 1106 1107| 参数名 | 类型 | 必填 | 说明 | 1108| ------- | --------------------- | ---- | ------------------------------------------------------------ | 1109| context | Context | 是 | 应用上下文。<br>FA模型的应用Context定义见[Context](../apis-ability-kit/js-apis-inner-app-context.md)。<br>Stage模型的应用Context定义见[Context](../apis-ability-kit/js-apis-inner-application-uiAbilityContext.md)。 | 1110| options | [Options](#options10) | 是 | 与Preferences实例相关的配置选项。 | 1111 1112**错误码:** 1113 1114以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[用户首选项错误码](errorcode-preferences.md)。 1115 1116| 错误码ID | 错误信息 | 1117| -------- | ------------------------------ | 1118| 401 | Parameter error. Possible causes:1. Mandatory parameters are left unspecified;2. Incorrect parameter types;3. Parameter verification failed. | 1119| 801 | Capability not supported. | 1120| 15500000 | Inner error. | 1121| 15501001 | The operations is supported in stage mode only. | 1122| 15501002 | Invalid dataGroupId. | 1123 1124**示例:** 1125 1126FA模型示例: 1127 1128<!--code_no_check_fa--> 1129```ts 1130// 获取context 1131import { featureAbility } from '@kit.AbilityKit'; 1132let context = featureAbility.getContext(); 1133let options: preferences.Options = { name: 'myStore' }; 1134preferences.removePreferencesFromCacheSync(context, options); 1135``` 1136 1137Stage模型示例: 1138 1139```ts 1140import { UIAbility } from '@kit.AbilityKit'; 1141import { window } from '@kit.ArkUI'; 1142 1143class EntryAbility extends UIAbility { 1144 onWindowStageCreate(windowStage: window.WindowStage) { 1145 let options: preferences.Options = { name: 'myStore' }; 1146 preferences.removePreferencesFromCacheSync(this.context, options); 1147 } 1148} 1149``` 1150 1151## StorageType<sup>18+</sup> 1152Preferences的存储模式枚举。 1153 1154**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。 1155 1156**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core 1157 1158| 名称 | 值 | 说明 | 1159| ---- | ---- | ---- | 1160| XML | 0 | 表示[XML存储模式](../../database/data-persistence-by-preferences.md#xml存储),这是Preferences的默认存储模式。<br>**特点:** 数据XML格式进行存储。对数据的操作发生在内存中,需要调用flush接口进行落盘。 | 1161| GSKV | 1 |表示[GSKV存储模式](../../database/data-persistence-by-preferences.md#gskv存储)。<br>**特点:** 数据以GSKV数据库模式进行存储。对数据的操作实时落盘,无需调用flush接口对数据进行落盘。 | 1162 1163 1164> **说明:** 1165> - 在选择存储模式前,建议调用isStorageTypeSupported检查当前平台是否支持对应存储模式。 1166> - 当选择某一模式通过getPreferences接口获取实例后,不允许中途切换模式。 1167> - 首选项不支持不同模式间数据的迁移,若需将数据从一种模式切换至另一种模式,需通过读写首选项的形式进行数据迁移。 1168> - 若需要变更首选项的存储路径,不能通过移动或覆盖文件的方式进行,需通过读写首选项的形式进行数据迁移。 1169 1170## preferences.isStorageTypeSupported<sup>18+</sup> 1171isStorageTypeSupported(type: StorageType): boolean 1172 1173判断当前平台是否支持传入的存储模式,此为同步接口。如果当前平台支持传入的存储模式时,该接口返回true;反之,返回false。 1174 1175**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。 1176 1177**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core 1178 1179**参数:** 1180 1181| 参数名 | 类型 | 必填 | 说明 | 1182| ------- | --------------------- | ---- | ------------------------------------------------------------ | 1183| type | [StorageType](#storagetype18) | 是 | 需要判断是否支持的存储模式。 | 1184 1185**返回值:** 1186 1187| 类型 | 说明 | 1188| ------------------- | ------------------------- | 1189| boolean | true表示当前平台支持当前校验的存储模式,false表示当前平台不支持当前校验的存储模式。 | 1190 1191**错误码:** 1192 1193以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[用户首选项错误码](errorcode-preferences.md)。 1194 1195| 错误码ID | 错误信息 | 1196| -------- | ------------------------------ | 1197| 401 | Parameter error. Possible causes: Incorrect parameter types. | 1198 1199 1200**示例:** 1201 1202```ts 1203let xmlType = preferences.StorageType.XML; 1204let gskvType = preferences.StorageType.GSKV; 1205let isXmlSupported = preferences.isStorageTypeSupported(xmlType); 1206let isGskvSupported = preferences.isStorageTypeSupported(gskvType); 1207console.info("Is xml supported in current platform: " + isXmlSupported); 1208console.info("Is gskv supported in current platform: " + isGskvSupported); 1209``` 1210 1211## Options<sup>10+</sup> 1212 1213Preferences实例配置选项。 1214 1215**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core 1216 1217| 名称 | 类型 | 必填 | 说明 | 1218| ----------- | ------ | ---- | ------------------------------------------------------------ | 1219| name | string | 是 | Preferences实例的名称。名称长度需大于零且小于等于255字节,名称中不能包含'/'且不能以'/'结尾。 <br/>**原子化服务API:** 从API version 11开始,该参数支持在原子化服务中使用。 <br/> | 1220| dataGroupId | string\|null\|undefined | 否 | 应用组ID,<!--RP1-->暂不支持指定dataGroupId在对应共享沙箱路径下创建Preferences实例。<!--RP1End--><br/>为可选参数。指定在此dataGroupId对应的沙箱路径下创建Preferences实例。当此参数不填时,默认在本应用沙箱目录下创建Preferences实例。<br/> **模型约束:** 此属性仅在Stage模型下可用。<br/>**原子化服务API:** 从API version 11开始,该参数支持在原子化服务中使用。 <br/> | 1221| storageType<sup>18+</sup> | [StorageType](#storagetype18)\|null\|undefined | 否 | 存储模式,为可选参数。表示当前Preferences实例需要使用的存储模式。当此参数不填时,默认使用XML存储模式。当选择某种存储模式创建Preferences后,不支持中途切换存储模式。 <br/>**原子化服务API:** 从API version 18开始,该参数支持在原子化服务中使用。 <br/> | 1222 1223 1224## Preferences 1225 1226首选项实例,提供获取和修改存储数据的接口。 1227 1228下列接口都需先使用[preferences.getPreferences](#preferencesgetpreferences)获取到Preferences实例,再通过此实例调用对应接口。 1229 1230 1231### get 1232 1233get(key: string, defValue: ValueType, callback: AsyncCallback<ValueType>): void 1234 1235从缓存的Preferences实例中获取键对应的值,如果值为null或者非默认值类型,返回默认数据defValue,使用callback异步回调。 1236 1237**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1238 1239**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core 1240 1241**参数:** 1242 1243| 参数名 | 类型 | 必填 | 说明 | 1244| -------- | -------------------------------------------- | ---- |---------------------------| 1245| key | string | 是 | 要获取的存储Key名称,不能为空。 | 1246| defValue | [ValueType](#valuetype) | 是 | 默认返回值。 | 1247| callback | AsyncCallback<[ValueType](#valuetype)> | 是 | 回调函数。当获取成功时,err为undefined,data为键对应的值;否则err为错误对象。 | 1248 1249**错误码:** 1250 1251以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[用户首选项错误码](errorcode-preferences.md)。 1252 1253| 错误码ID | 错误信息 | 1254| -------- | ------------------------------ | 1255| 401 | Parameter error. Possible causes:1. Mandatory parameters are left unspecified;2. Incorrect parameter types;3. Parameter verification failed. | 1256| 15500000 | Inner error. | 1257 1258**示例:** 1259 1260```ts 1261import { BusinessError } from '@kit.BasicServicesKit'; 1262 1263dataPreferences.get('startup', 'default', (err: BusinessError, val: preferences.ValueType) => { 1264 if (err) { 1265 console.error("Failed to get value of 'startup'. code =" + err.code + ", message =" + err.message); 1266 return; 1267 } 1268 console.info("Succeeded in getting value of 'startup'. val: " + val); 1269}) 1270``` 1271 1272### get 1273 1274get(key: string, defValue: ValueType): Promise<ValueType> 1275 1276从缓存的Preferences实例中获取键对应的值,如果值为null或者非默认值类型,返回默认数据defValue,使用Promise异步回调。 1277 1278**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1279 1280**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core 1281 1282 **参数:** 1283 1284| 参数名 | 类型 | 必填 | 说明 | 1285| -------- | ----------------------- | ---- |--------| 1286| key | string | 是 | 要获取的存储Key名称,不能为空。 | 1287| defValue | [ValueType](#valuetype) | 是 | 默认返回值。 | 1288 1289**返回值:** 1290 1291| 类型 | 说明 | 1292| ----------------------------------- | ----------------------------- | 1293| Promise<[ValueType](#valuetype)> | Promise对象,返回键对应的值。 | 1294 1295**错误码:** 1296 1297以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[用户首选项错误码](errorcode-preferences.md)。 1298 1299| 错误码ID | 错误信息 | 1300| -------- | ------------------------------ | 1301| 401 | Parameter error. Possible causes:1. Mandatory parameters are left unspecified;2. Incorrect parameter types;3. Parameter verification failed. | 1302| 15500000 | Inner error. | 1303 1304**示例:** 1305 1306```ts 1307import { BusinessError } from '@kit.BasicServicesKit'; 1308 1309let promise = dataPreferences.get('startup', 'default'); 1310promise.then((data: preferences.ValueType) => { 1311 console.info("Succeeded in getting value of 'startup'. Data: " + data); 1312}).catch((err: BusinessError) => { 1313 console.error("Failed to get value of 'startup'. code =" + err.code + ", message =" + err.message); 1314}) 1315``` 1316 1317### getSync<sup>10+</sup> 1318 1319getSync(key: string, defValue: ValueType): ValueType 1320 1321从缓存的Preferences实例中获取键对应的值,如果值为null或者非默认值类型,返回默认数据defValue,此为同步接口。 1322 1323**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1324 1325**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core 1326 1327**参数:** 1328 1329| 参数名 | 类型 | 必填 | 说明 | 1330| -------- | ----------------------- | ---- |---------------------| 1331| key | string | 是 | 要获取的存储Key名称,不能为空。 | 1332| defValue | [ValueType](#valuetype) | 是 | 默认返回值。 | 1333 1334**返回值:** 1335 1336| 类型 | 说明 | 1337| ----------------------------------- | ----------------------------- | 1338| [ValueType](#valuetype) | 返回键对应的值。 | 1339 1340**错误码:** 1341 1342以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[用户首选项错误码](errorcode-preferences.md)。 1343 1344| 错误码ID | 错误信息 | 1345| -------- | ------------------------------ | 1346| 401 | Parameter error. Possible causes:1. Mandatory parameters are left unspecified;2. Incorrect parameter types;3. Parameter verification failed. | 1347| 15500000 | Inner error. | 1348 1349**示例:** 1350 1351```ts 1352let value: preferences.ValueType = dataPreferences.getSync('startup', 'default'); 1353``` 1354 1355### getAll 1356 1357getAll(callback: AsyncCallback<Object>): void 1358 1359获取缓存的Preferences实例中的所有键值数据。 1360 1361**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1362 1363**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core 1364 1365**参数:** 1366 1367| 参数名 | 类型 | 必填 | 说明 | 1368| -------- | --------------------------- | ---- | ------------------------------------------------------------ | 1369| callback | AsyncCallback<Object> | 是 | 回调函数。当获取成功,err为undefined,value为所有键值数据;否则err为错误对象。 | 1370 1371**错误码:** 1372 1373以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[用户首选项错误码](errorcode-preferences.md)。 1374 1375| 错误码ID | 错误信息 | 1376| -------- | ------------------------------ | 1377| 401 | Parameter error. Mandatory parameters are left unspecified.| 1378| 15500000 | Inner error. | 1379 1380**示例:** 1381 1382```ts 1383import { BusinessError } from '@kit.BasicServicesKit'; 1384 1385// 由于ArkTS中无Object.keys,且无法使用for..in... 1386// 若报ArkTS问题,请将此方法单独抽离至一个ts文件中并暴露,在需要用到的ets文件中引入使用 1387function getObjKeys(obj: Object): string[] { 1388 let keys = Object.keys(obj); 1389 return keys; 1390} 1391 1392dataPreferences.getAll((err: BusinessError, value: Object) => { 1393 if (err) { 1394 console.error("Failed to get all key-values. code =" + err.code + ", message =" + err.message); 1395 return; 1396 } 1397 let allKeys = getObjKeys(value); 1398 console.info("getAll keys = " + allKeys); 1399 console.info("getAll object = " + JSON.stringify(value)); 1400}) 1401``` 1402 1403 1404### getAll 1405 1406getAll(): Promise<Object> 1407 1408获取缓存的Preferences实例中的所有键值数据。 1409 1410**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1411 1412**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core 1413 1414**返回值:** 1415 1416| 类型 | 说明 | 1417| --------------------- | ------------------------------------------- | 1418| Promise<Object> | Promise对象,返回所有包含的键值数据。 | 1419 1420**错误码:** 1421 1422以下错误码的详细介绍请参见[用户首选项错误码](errorcode-preferences.md)。 1423 1424| 错误码ID | 错误信息 | 1425| -------- | ------------------------------ | 1426| 15500000 | Inner error. | 1427 1428**示例:** 1429 1430```ts 1431import { BusinessError } from '@kit.BasicServicesKit'; 1432 1433// 由于ArkTS中无Object.keys,且无法使用for..in... 1434// 若报ArkTS问题,请将此方法单独抽离至一个ts文件中并暴露,在需要用到的ets文件中引入使用 1435function getObjKeys(obj: Object): string[] { 1436 let keys = Object.keys(obj); 1437 return keys; 1438} 1439 1440let promise = dataPreferences.getAll(); 1441promise.then((value: Object) => { 1442 let allKeys = getObjKeys(value); 1443 console.info('getAll keys = ' + allKeys); 1444 console.info("getAll object = " + JSON.stringify(value)); 1445}).catch((err: BusinessError) => { 1446 console.error("Failed to get all key-values. code =" + err.code + ", message =" + err.message); 1447}) 1448``` 1449 1450### getAllSync<sup>10+</sup> 1451 1452getAllSync(): Object 1453 1454获取缓存的Preferences实例中的所有键值数据,此为同步接口。 1455 1456**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1457 1458**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core 1459 1460**返回值:** 1461 1462| 类型 | 说明 | 1463| --------------------- | ------------------------------------------- | 1464| Object | 返回所有包含的键值数据。| 1465 1466**错误码:** 1467 1468以下错误码的详细介绍请参见[用户首选项错误码](errorcode-preferences.md)。 1469 1470| 错误码ID | 错误信息 | 1471| -------- | ------------------------------ | 1472| 15500000 | Inner error. | 1473 1474**示例:** 1475 1476```ts 1477// 由于ArkTS中无Object.keys,且无法使用for..in... 1478// 若报ArkTS问题,请将此方法单独抽离至一个ts文件中并暴露,在需要用到的ets文件中引入使用 1479function getObjKeys(obj: Object): string[] { 1480 let keys = Object.keys(obj); 1481 return keys; 1482} 1483 1484let value = dataPreferences.getAllSync(); 1485let allKeys = getObjKeys(value); 1486console.info('getAll keys = ' + allKeys); 1487console.info("getAll object = " + JSON.stringify(value)); 1488``` 1489 1490### put 1491 1492put(key: string, value: ValueType, callback: AsyncCallback<void>): void 1493 1494将数据写入缓存的Preferences实例中,可通过[flush](#flush)将Preferences实例持久化,使用callback异步回调。 1495 1496 > **说明:** 1497 > 1498 > 当value中包含非UTF-8格式的字符串时,请使用Uint8Array类型存储,否则会造成持久化文件出现格式错误造成文件损坏。 1499 > 1500 > 当对应的键已经存在时,put()方法会覆盖其值。可以使用hasSync()方法检查是否存在对应键值对。 1501 1502**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1503 1504**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core 1505 1506**参数:** 1507 1508| 参数名 | 类型 | 必填 | 说明 | 1509| -------- | ------------------------- | ---- |-------------------------| 1510| key | string | 是 | 要修改的存储的Key,不能为空。 | 1511| value | [ValueType](#valuetype) | 是 | 存储的新值。 | 1512| callback | AsyncCallback<void> | 是 | 回调函数。当数据写入成功,err为undefined;否则为错误对象。 | 1513 1514**错误码:** 1515 1516以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[用户首选项错误码](errorcode-preferences.md)。 1517 1518| 错误码ID | 错误信息 | 1519| -------- | ------------------------------ | 1520| 401 | Parameter error. Possible causes:1. Mandatory parameters are left unspecified;2. Incorrect parameter types;3. Parameter verification failed. | 1521| 15500000 | Inner error. | 1522 1523**示例:** 1524 1525```ts 1526import { BusinessError } from '@kit.BasicServicesKit'; 1527 1528dataPreferences.put('startup', 'auto', (err: BusinessError) => { 1529 if (err) { 1530 console.error("Failed to put value of 'startup'. code =" + err.code + ", message =" + err.message); 1531 return; 1532 } 1533 console.info("Succeeded in putting value of 'startup'."); 1534}) 1535``` 1536 1537 1538### put 1539 1540put(key: string, value: ValueType): Promise<void> 1541 1542将数据写入缓存的Preferences实例中,可通过[flush](#flush)将Preferences实例持久化,使用Promise异步回调。 1543 1544 > **说明:** 1545 > 1546 > 当value中包含非UTF-8格式的字符串时,请使用Uint8Array类型存储,否则会造成持久化文件出现格式错误造成文件损坏。 1547 > 1548 > 当对应的键已经存在时,put()方法会覆盖其值。可以使用hasSync()方法检查是否存在对应键值对。 1549 1550**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1551 1552**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core 1553 1554**参数:** 1555 1556| 参数名 | 类型 | 必填 | 说明 | 1557| ------ | ----------------------- | ---- |--------------------------| 1558| key | string | 是 | 要修改的存储的Key,不能为空。 | 1559| value | [ValueType](#valuetype) | 是 | 存储的新值。 | 1560 1561**返回值:** 1562 1563| 类型 | 说明 | 1564| ------------------- | ------------------------- | 1565| Promise<void> | 无返回结果的Promise对象。 | 1566 1567**错误码:** 1568 1569以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[用户首选项错误码](errorcode-preferences.md)。 1570 1571| 错误码ID | 错误信息 | 1572| -------- | ------------------------------ | 1573| 401 | Parameter error. Possible causes:1. Mandatory parameters are left unspecified;2. Incorrect parameter types;3. Parameter verification failed. | 1574| 15500000 | Inner error. | 1575 1576**示例:** 1577 1578```ts 1579import { BusinessError } from '@kit.BasicServicesKit'; 1580 1581let promise = dataPreferences.put('startup', 'auto'); 1582promise.then(() => { 1583 console.info("Succeeded in putting value of 'startup'."); 1584}).catch((err: BusinessError) => { 1585 console.error("Failed to put value of 'startup'. code =" + err.code + ", message =" + err.message); 1586}) 1587``` 1588 1589 1590### putSync<sup>10+</sup> 1591 1592putSync(key: string, value: ValueType): void 1593 1594将数据写入缓存的Preferences实例中,可通过[flush](#flush)将Preferences实例持久化,此为同步接口。 1595 1596 > **说明:** 1597 > 1598 > 当value中包含非UTF-8格式的字符串时,请使用Uint8Array类型存储,否则会造成持久化文件出现格式错误造成文件损坏。 1599 > 1600 > 当对应的键已经存在时,putSync()方法会覆盖其值。可以使用hasSync()方法检查是否存在对应键值对。 1601 1602**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1603 1604**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core 1605 1606**参数:** 1607 1608| 参数名 | 类型 | 必填 | 说明 | 1609| ------ | ----------------------- | ---- | ------------------------ | 1610| key | string | 是 | 要修改的存储的Key,不能为空。 | 1611| value | [ValueType](#valuetype) | 是 | 存储的新值。 | 1612 1613**错误码:** 1614 1615以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[用户首选项错误码](errorcode-preferences.md)。 1616 1617| 错误码ID | 错误信息 | 1618| -------- | ------------------------------ | 1619| 401 | Parameter error. Possible causes:1. Mandatory parameters are left unspecified;2. Incorrect parameter types;3. Parameter verification failed. | 1620| 15500000 | Inner error. | 1621 1622**示例:** 1623 1624```ts 1625dataPreferences.putSync('startup', 'auto'); 1626``` 1627 1628 1629### has 1630 1631has(key: string, callback: AsyncCallback<boolean>): void 1632 1633检查缓存的Preferences实例中是否包含指定Key的存储键值对,使用callback异步回调。 1634 1635**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1636 1637**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core 1638 1639**参数:** 1640 1641| 参数名 | 类型 | 必填 | 说明 | 1642| -------- | ---------------------------- | ---- | ------------------------------------------------------------ | 1643| key | string | 是 | 要检查的存储key名称,不能为空。 | 1644| callback | AsyncCallback<boolean> | 是 | 回调函数。返回Preferences实例是否包含给定key的存储键值对,true表示存在,false表示不存在。 | 1645 1646**错误码:** 1647 1648以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[用户首选项错误码](errorcode-preferences.md)。 1649 1650| 错误码ID | 错误信息 | 1651| -------- | ------------------------------ | 1652| 401 | Parameter error. Possible causes:1. Mandatory parameters are left unspecified;2. Incorrect parameter types;3. Parameter verification failed. | 1653| 15500000 | Inner error. | 1654 1655**示例:** 1656 1657```ts 1658import { BusinessError } from '@kit.BasicServicesKit'; 1659 1660dataPreferences.has('startup', (err: BusinessError, val: boolean) => { 1661 if (err) { 1662 console.error("Failed to check the key 'startup'. code =" + err.code + ", message =" + err.message); 1663 return; 1664 } 1665 if (val) { 1666 console.info("The key 'startup' is contained."); 1667 } else { 1668 console.info("The key 'startup' is not contained."); 1669 } 1670}) 1671``` 1672 1673 1674### has 1675 1676has(key: string): Promise<boolean> 1677 1678检查缓存的Preferences实例中是否包含指定Key的存储键值对,使用Promise异步回调。 1679 1680**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1681 1682**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core 1683 1684**参数:** 1685 1686| 参数名 | 类型 | 必填 | 说明 | 1687| ------ | ------ | ---- | ------------------------------- | 1688| key | string | 是 | 要检查的存储key名称,不能为空。 | 1689 1690**返回值:** 1691 1692| 类型 | 说明 | 1693| ---------------------- | ------------------------------------------------------------ | 1694| Promise<boolean> | Promise对象。返回Preferences实例是否包含给定key的存储键值对,true表示存在,false表示不存在。 | 1695 1696**错误码:** 1697 1698以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[用户首选项错误码](errorcode-preferences.md)。 1699 1700| 错误码ID | 错误信息 | 1701| -------- | ------------------------------ | 1702| 401 | Parameter error. Possible causes:1. Mandatory parameters are left unspecified;2. Incorrect parameter types;3. Parameter verification failed. | 1703| 15500000 | Inner error. | 1704 1705**示例:** 1706 1707```ts 1708import { BusinessError } from '@kit.BasicServicesKit'; 1709 1710let promise = dataPreferences.has('startup'); 1711promise.then((val: boolean) => { 1712 if (val) { 1713 console.info("The key 'startup' is contained."); 1714 } else { 1715 console.info("The key 'startup' does not contain."); 1716 } 1717}).catch((err: BusinessError) => { 1718 console.error("Failed to check the key 'startup'. code =" + err.code + ", message =" + err.message); 1719}) 1720``` 1721 1722 1723### hasSync<sup>10+</sup> 1724 1725hasSync(key: string): boolean 1726 1727检查缓存的Preferences实例中是否包含指定Key的存储键值对,此为同步接口。 1728 1729**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1730 1731**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core 1732 1733**参数:** 1734 1735| 参数名 | 类型 | 必填 | 说明 | 1736| ------ | ------ | ---- | ------------------------------- | 1737| key | string | 是 | 要检查的存储key名称,不能为空。 | 1738 1739**返回值:** 1740 1741| 类型 | 说明 | 1742| ---------------------- | ------------------------------------------------------------ | 1743| boolean | 返回Preferences实例是否包含给定key的存储键值对,true表示存在,false表示不存在。 | 1744 1745**错误码:** 1746 1747以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[用户首选项错误码](errorcode-preferences.md)。 1748 1749| 错误码ID | 错误信息 | 1750| -------- | ------------------------------ | 1751| 401 | Parameter error. Possible causes:1. Mandatory parameters are left unspecified;2. Incorrect parameter types;3. Parameter verification failed. | 1752| 15500000 | Inner error. | 1753 1754**示例:** 1755 1756```ts 1757let isExist: boolean = dataPreferences.hasSync('startup'); 1758if (isExist) { 1759 console.info("The key 'startup' is contained."); 1760} else { 1761 console.info("The key 'startup' does not contain."); 1762} 1763``` 1764 1765 1766### delete 1767 1768delete(key: string, callback: AsyncCallback<void>): void 1769 1770从缓存的Preferences实例中删除名为给定Key的存储键值对,可通过[flush](#flush)将Preferences实例持久化,使用callback异步回调。 1771 1772**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1773 1774**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core 1775 1776**参数:** 1777 1778| 参数名 | 类型 | 必填 | 说明 | 1779| -------- | ------------------------- | ---- | ---------------------------------------------------- | 1780| key | string | 是 | 要删除的存储Key名称,不能为空。 | 1781| callback | AsyncCallback<void> | 是 | 回调函数。当删除成功,err为undefined;否则为错误对象。 | 1782 1783**错误码:** 1784 1785以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[用户首选项错误码](errorcode-preferences.md)。 1786 1787| 错误码ID | 错误信息 | 1788| -------- | ------------------------------ | 1789| 401 | Parameter error. Possible causes:1. Mandatory parameters are left unspecified;2. Incorrect parameter types;3. Parameter verification failed. | 1790| 15500000 | Inner error. | 1791 1792**示例:** 1793 1794```ts 1795import { BusinessError } from '@kit.BasicServicesKit'; 1796 1797dataPreferences.delete('startup', (err: BusinessError) => { 1798 if (err) { 1799 console.error("Failed to delete the key 'startup'. code =" + err.code + ", message =" + err.message); 1800 return; 1801 } 1802 console.info("Succeeded in deleting the key 'startup'."); 1803}) 1804``` 1805 1806 1807### delete 1808 1809delete(key: string): Promise<void> 1810 1811从缓存的Preferences实例中删除名为给定Key的存储键值对,可通过[flush](#flush)将Preferences实例持久化,使用Promise异步回调。 1812 1813**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1814 1815**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core 1816 1817**参数:** 1818 1819| 参数名 | 类型 | 必填 | 说明 | 1820| ------ | ------ | ---- | ------------------------------- | 1821| key | string | 是 | 要删除的存储key名称,不能为空。 | 1822 1823**返回值:** 1824 1825| 类型 | 说明 | 1826| ------------------- | ------------------------- | 1827| Promise<void> | 无返回结果的Promise对象。 | 1828 1829**错误码:** 1830 1831以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[用户首选项错误码](errorcode-preferences.md)。 1832 1833| 错误码ID | 错误信息 | 1834| -------- | ------------------------------ | 1835| 401 | Parameter error. Possible causes:1. Mandatory parameters are left unspecified;2. Incorrect parameter types;3. Parameter verification failed. | 1836| 15500000 | Inner error. | 1837 1838**示例:** 1839 1840```ts 1841import { BusinessError } from '@kit.BasicServicesKit'; 1842 1843let promise = dataPreferences.delete('startup'); 1844promise.then(() => { 1845 console.info("Succeeded in deleting the key 'startup'."); 1846}).catch((err: BusinessError) => { 1847 console.error("Failed to delete the key 'startup'. code =" + err.code +", message =" + err.message); 1848}) 1849``` 1850 1851 1852### deleteSync<sup>10+</sup> 1853 1854deleteSync(key: string): void 1855 1856从缓存的Preferences实例中删除名为给定Key的存储键值对,可通过[flush](#flush)将Preferences实例持久化,此为同步接口。 1857 1858**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1859 1860**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core 1861 1862**参数:** 1863 1864| 参数名 | 类型 | 必填 | 说明 | 1865| ------ | ------ | ---- | ------------------------------- | 1866| key | string | 是 | 要删除的存储key名称,不能为空。 | 1867 1868**错误码:** 1869 1870以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[用户首选项错误码](errorcode-preferences.md)。 1871 1872| 错误码ID | 错误信息 | 1873| -------- | ------------------------------ | 1874| 401 | Parameter error. Possible causes:1. Mandatory parameters are left unspecified;2. Incorrect parameter types;3. Parameter verification failed. | 1875| 15500000 | Inner error. | 1876 1877**示例:** 1878 1879```ts 1880dataPreferences.deleteSync('startup'); 1881``` 1882 1883 1884### flush 1885 1886flush(callback: AsyncCallback<void>): void 1887 1888将缓存的Preferences实例中的数据异步存储到用户首选项的持久化文件中,使用callback异步回调。 1889 1890 > **说明:** 1891 > 1892 > 当数据未修改或修改后的数据与缓存数据一致时,不会刷新持久化文件。 1893 > 1894 > 只在XML存储模式下使用,在GSKV存储模式下无需调用,因为当选择该模式时首选项对数据的操作会实时落盘。Preferences存储模式可见[存储模式说明](../../database/data-persistence-by-preferences.md#存储模式说明)。 1895 1896**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1897 1898**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core 1899 1900**参数:** 1901 1902| 参数名 | 类型 | 必填 | 说明 | 1903| -------- | ------------------------- | ---- | ---------------------------------------------------- | 1904| callback | AsyncCallback<void> | 是 | 回调函数。当保存成功,err为undefined;否则为错误对象。 | 1905 1906**错误码:** 1907 1908以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[用户首选项错误码](errorcode-preferences.md)。 1909 1910| 错误码ID | 错误信息 | 1911| -------- | ------------------------------ | 1912| 401 | Parameter error. Mandatory parameters are left unspecified. | 1913| 15500000 | Inner error. | 1914 1915**示例:** 1916 1917```ts 1918import { BusinessError } from '@kit.BasicServicesKit'; 1919 1920dataPreferences.flush((err: BusinessError) => { 1921 if (err) { 1922 console.error("Failed to flush. code =" + err.code + ", message =" + err.message); 1923 return; 1924 } 1925 console.info("Succeeded in flushing."); 1926}) 1927``` 1928 1929 1930### flush 1931 1932flush(): Promise<void> 1933 1934将缓存的Preferences实例中的数据异步存储到用户首选项的持久化文件中,使用Promise异步回调。 1935 1936 > **说明:** 1937 > 1938 > 当数据未修改或修改后的数据与缓存数据一致时,不会刷新持久化文件。 1939 > 1940 > 只在XML存储模式下使用,在GSKV存储模式下无需调用,因为当选择该模式时首选项对数据的操作会实时落盘。Preferences存储模式可见[存储模式说明](../../database/data-persistence-by-preferences.md#存储模式说明)。 1941 1942**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1943 1944**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core 1945 1946**返回值:** 1947 1948| 类型 | 说明 | 1949| ------------------- | ------------------------- | 1950| Promise<void> | 无返回结果的Promise对象。 | 1951 1952**错误码:** 1953 1954以下错误码的详细介绍请参见[用户首选项错误码](errorcode-preferences.md)。 1955 1956| 错误码ID | 错误信息 | 1957| -------- | ------------------------------ | 1958| 15500000 | Inner error. | 1959 1960**示例:** 1961 1962```ts 1963import { BusinessError } from '@kit.BasicServicesKit'; 1964 1965let promise = dataPreferences.flush(); 1966promise.then(() => { 1967 console.info("Succeeded in flushing."); 1968}).catch((err: BusinessError) => { 1969 console.error("Failed to flush. code =" + err.code + ", message =" + err.message); 1970}) 1971``` 1972 1973### flushSync<sup>14+</sup> 1974 1975flushSync(): void 1976 1977将缓存的Preferences实例中的数据存储到用户首选项的持久化文件中。 1978 1979 > **说明:** 1980 > 1981 > 当数据未修改或修改后的数据与缓存数据一致时,不会刷新持久化文件。 1982 1983**原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。 1984 1985**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core 1986 1987**错误码:** 1988 1989以下错误码的详细介绍请参见[用户首选项错误码](errorcode-preferences.md)。 1990 1991| 错误码ID | 错误信息 | 1992| -------- | ------------------------------ | 1993| 15500000 | Inner error. | 1994 1995**示例:** 1996 1997```ts 1998dataPreferences.flushSync(); 1999``` 2000 2001### clear 2002 2003clear(callback: AsyncCallback<void>): void 2004 2005清除缓存的Preferences实例中的所有数据,可通过[flush](#flush)将Preferences实例持久化,使用callback异步回调。 2006 2007**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 2008 2009**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core 2010 2011**参数:** 2012 2013| 参数名 | 类型 | 必填 | 说明 | 2014| -------- | ------------------------- | ---- | ---------------------------------------------------- | 2015| callback | AsyncCallback<void> | 是 | 回调函数。当清除成功,err为undefined;否则为错误对象。 | 2016 2017**错误码:** 2018 2019以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[用户首选项错误码](errorcode-preferences.md)。 2020 2021| 错误码ID | 错误信息 | 2022| -------- | ------------------------------ | 2023| 401 | Parameter error. Mandatory parameters are left unspecified. | 2024| 15500000 | Inner error. | 2025 2026**示例:** 2027 2028```ts 2029import { BusinessError } from '@kit.BasicServicesKit'; 2030 2031dataPreferences.clear((err: BusinessError) =>{ 2032 if (err) { 2033 console.error("Failed to clear. code =" + err.code + ", message =" + err.message); 2034 return; 2035 } 2036 console.info("Succeeded in clearing."); 2037}) 2038``` 2039 2040 2041### clear 2042 2043clear(): Promise<void> 2044 2045清除缓存的Preferences实例中的所有数据,可通过[flush](#flush)将Preferences实例持久化,使用Promise异步回调。 2046 2047**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 2048 2049**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core 2050 2051**返回值:** 2052 2053| 类型 | 说明 | 2054| ------------------- | ------------------------- | 2055| Promise<void> | 无返回结果的Promise对象。 | 2056 2057**错误码:** 2058 2059以下错误码的详细介绍请参见[用户首选项错误码](errorcode-preferences.md)。 2060 2061| 错误码ID | 错误信息 | 2062| -------- | ------------------------------ | 2063| 15500000 | Inner error. | 2064 2065**示例:** 2066 2067```ts 2068import { BusinessError } from '@kit.BasicServicesKit'; 2069 2070let promise = dataPreferences.clear(); 2071promise.then(() => { 2072 console.info("Succeeded in clearing."); 2073}).catch((err: BusinessError) => { 2074 console.error("Failed to clear. code =" + err.code + ", message =" + err.message); 2075}) 2076``` 2077 2078 2079### clearSync<sup>10+</sup> 2080 2081clearSync(): void 2082 2083清除缓存的Preferences实例中的所有数据,可通过[flush](#flush)将Preferences实例持久化,此为同步接口。 2084 2085**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 2086 2087**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core 2088 2089**示例:** 2090 2091```ts 2092dataPreferences.clearSync(); 2093``` 2094 2095 2096### on('change') 2097 2098on(type: 'change', callback: Callback<string>): void 2099 2100订阅数据变更,订阅的Key的值发生变更后,在执行[flush](#flush)方法后,触发callback回调。 2101 2102 > **说明:** 2103 > 2104 > 当调用[removePreferencesFromCache](#preferencesremovepreferencesfromcache)或[deletePreferences](#preferencesdeletepreferences)后,订阅的数据变更会主动取消订阅,在重新[getPreferences](#preferencesgetpreferences)后需要重新订阅数据变更。 2105 2106**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 2107 2108**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core 2109 2110**参数:** 2111 2112| 参数名 | 类型 | 必填 | 说明 | 2113| -------- | -------- | ---- | ---------------------------------------- | 2114| type | string | 是 | 事件类型,固定值'change',表示数据变更。 | 2115| callback | Callback<string> | 是 | 回调函数。 | 2116 2117**错误码:** 2118 2119以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[用户首选项错误码](errorcode-preferences.md)。 2120 2121| 错误码ID | 错误信息 | 2122| -------- | ------------------------------ | 2123| 401 | Parameter error. Possible causes:1. Mandatory parameters are left unspecified;2. Incorrect parameter types;3. Parameter verification failed. | 2124| 15500000 | Inner error. | 2125 2126**示例:** 2127 2128```ts 2129import { BusinessError } from '@kit.BasicServicesKit'; 2130 2131let observer = (key: string) => { 2132 console.info("The key " + key + " changed."); 2133} 2134dataPreferences.on('change', observer); 2135dataPreferences.putSync('startup', 'manual'); 2136dataPreferences.flush((err: BusinessError) => { 2137 if (err) { 2138 console.error("Failed to flush. Cause: " + err); 2139 return; 2140 } 2141 console.info("Succeeded in flushing."); 2142}) 2143``` 2144 2145### on('multiProcessChange')<sup>10+</sup> 2146 2147on(type: 'multiProcessChange', callback: Callback<string>): void 2148 2149订阅进程间数据变更,多个进程持有同一个首选项文件时,在任意一个进程(包括本进程)执行[flush](#flush)方法,持久化文件发生变更后,触发callback回调。 2150 2151本接口提供给申请了[dataGroupId](#options10)的应用进行使用,未申请的应用不推荐使用,多进程操作可能会损坏持久化文件,导致数据丢失。 2152 2153 > **说明:** 2154 > 2155 > 同一持久化文件在当前进程订阅进程间数据变更的最大数量为50次,超过最大限制后会订阅失败。建议在触发callback回调后及时取消订阅。 2156 > 2157 > 当调用[removePreferencesFromCache](#preferencesremovepreferencesfromcache)或[deletePreferences](#preferencesdeletepreferences)后,订阅的数据变更会主动取消订阅,在重新[getPreferences](#preferencesgetpreferences)后需要重新订阅数据变更。 2158 2159**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 2160 2161**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core 2162 2163**参数:** 2164 2165| 参数名 | 类型 | 必填 | 说明 | 2166| -------- | -------- | ---- | ------------------------------------------------------------ | 2167| type | string | 是 | 事件类型,固定值'multiProcessChange',表示多进程间的数据变更。 | 2168| callback | Callback<string> | 是 | 回调函数。 | 2169 2170**错误码:** 2171 2172以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[用户首选项错误码](errorcode-preferences.md)。 2173 2174| 错误码ID | 错误信息 | 2175| -------- | -------------------------------------- | 2176| 401 | Parameter error. Possible causes:1. Mandatory parameters are left unspecified;2. Incorrect parameter types;3. Parameter verification failed. | 2177| 15500000 | Inner error. | 2178| 15500019 | Failed to obtain the subscription service. | 2179 2180**示例:** 2181 2182```ts 2183import { BusinessError } from '@kit.BasicServicesKit'; 2184 2185let observer = (key: string) => { 2186 console.info("The key " + key + " changed."); 2187} 2188dataPreferences.on('multiProcessChange', observer); 2189dataPreferences.putSync('startup', 'manual'); 2190dataPreferences.flush((err: BusinessError) => { 2191 if (err) { 2192 console.error("Failed to flush. Cause: " + err); 2193 return; 2194 } 2195 console.info("Succeeded in flushing."); 2196}) 2197``` 2198 2199### on('dataChange')<sup>12+</sup> 2200 2201on(type: 'dataChange', keys: Array<string>, callback: Callback<Record<string, ValueType>>): void 2202 2203精确订阅数据变更,只有被订阅的key值发生变更后,在执行[flush](#flush)方法后,触发callback回调。 2204 2205 > **说明:** 2206 > 2207 > 当调用[removePreferencesFromCache](#preferencesremovepreferencesfromcache)或[deletePreferences](#preferencesdeletepreferences)后,订阅的数据变更会主动取消订阅,在重新[getPreferences](#preferencesgetpreferences)后需要重新订阅数据变更。 2208 2209**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2210 2211**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core 2212 2213**参数:** 2214 2215| 参数名 | 类型 | 必填 | 说明 | 2216| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 2217| type | string | 是 | 事件类型,固定值'dataChange',表示精确的数据变更。 | 2218| keys | Array<string> | 是 | 需要订阅的key集合。 | 2219| callback | Callback<Record<string, [ValueType](#valuetype)>> | 是 | 回调函数。回调支持返回多个键值对,其中键为发生变更的订阅key,值为变更后的数据:支持number、string、boolean、Array\<number>、Array\<string>、Array\<boolean>、Uint8Array、object类型。 | 2220 2221**错误码:** 2222 2223以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[用户首选项错误码](errorcode-preferences.md)。 2224 2225| 错误码ID | 错误信息 | 2226| -------- | ------------------------------ | 2227| 401 | Parameter error. Possible causes:1. Mandatory parameters are left unspecified;2. Incorrect parameter types;3. Parameter verification failed. | 2228| 15500000 | Inner error. | 2229 2230**示例:** 2231 2232```ts 2233import { BusinessError } from '@kit.BasicServicesKit'; 2234 2235let observer = (data: Record<string, preferences.ValueType>) => { 2236 for (const keyValue of Object.entries(data)) { 2237 console.info(`observer : ${keyValue}`); 2238 } 2239 console.info("The observer called."); 2240} 2241let keys = ['name', 'age']; 2242dataPreferences.on('dataChange', keys, observer); 2243dataPreferences.putSync('name', 'xiaohong'); 2244dataPreferences.putSync('weight', 125); 2245dataPreferences.flush((err: BusinessError) => { 2246 if (err) { 2247 console.error("Failed to flush. Cause: " + err); 2248 return; 2249 } 2250 console.info("Succeeded in flushing."); 2251}) 2252``` 2253 2254### off('change') 2255 2256off(type: 'change', callback?: Callback<string>): void 2257 2258取消订阅数据变更。 2259 2260**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 2261 2262**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core 2263 2264**参数:** 2265 2266| 参数名 | 类型 | 必填 | 说明 | 2267| -------- | -------- | ---- | ------------------------------------------------------------ | 2268| type | string | 是 | 事件类型,固定值'change',表示数据变更。 | 2269| callback | Callback<string> | 否 | 需要取消的回调函数,不填写则全部取消。 | 2270 2271**错误码:** 2272 2273以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[用户首选项错误码](errorcode-preferences.md)。 2274 2275| 错误码ID | 错误信息 | 2276| -------- | ------------------------------ | 2277| 401 | Parameter error. Possible causes:1. Mandatory parameters are left unspecified;2. Incorrect parameter types;3. Parameter verification failed. | 2278| 15500000 | Inner error. | 2279 2280**示例:** 2281 2282```ts 2283import { BusinessError } from '@kit.BasicServicesKit'; 2284 2285let observer = (key: string) => { 2286 console.info("The key " + key + " changed."); 2287} 2288dataPreferences.on('change', observer); 2289dataPreferences.putSync('startup', 'auto'); 2290dataPreferences.flush((err: BusinessError) => { 2291 if (err) { 2292 console.error("Failed to flush. Cause: " + err); 2293 return; 2294 } 2295 console.info("Succeeded in flushing."); 2296}) 2297dataPreferences.off('change', observer); 2298``` 2299 2300### off('multiProcessChange')<sup>10+</sup> 2301 2302off(type: 'multiProcessChange', callback?: Callback<string>): void 2303 2304取消订阅进程间数据变更。 2305 2306本接口提供给申请了[dataGroupId](#options10)的应用进行使用,未申请的应用不推荐使用,多进程操作可能会损坏持久化文件,导致数据丢失。 2307 2308**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 2309 2310**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core 2311 2312**参数:** 2313 2314| 参数名 | 类型 | 必填 | 说明 | 2315| -------- | -------- | ---- | ------------------------------------------------------------ | 2316| type | string | 是 | 事件类型,固定值'multiProcessChange',表示多进程间的数据变更。 | 2317| callback | Callback<string> | 否 | 需要取消的回调函数,不填写则全部取消。 | 2318 2319**错误码:** 2320 2321以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[用户首选项错误码](errorcode-preferences.md)。 2322 2323| 错误码ID | 错误信息 | 2324| -------- | ------------------------------ | 2325| 401 | Parameter error. Possible causes:1. Mandatory parameters are left unspecified;2. Incorrect parameter types;3. Parameter verification failed. | 2326| 15500000 | Inner error. | 2327 2328**示例:** 2329 2330```ts 2331import { BusinessError } from '@kit.BasicServicesKit'; 2332 2333let observer = (key: string) => { 2334 console.info("The key " + key + " changed."); 2335} 2336dataPreferences.on('multiProcessChange', observer); 2337dataPreferences.putSync('startup', 'auto'); 2338dataPreferences.flush((err: BusinessError) => { 2339 if (err) { 2340 console.error("Failed to flush. Cause: " + err); 2341 return; 2342 } 2343 console.info("Succeeded in flushing."); 2344}) 2345dataPreferences.off('multiProcessChange', observer); 2346``` 2347### off('dataChange')<sup>12+</sup> 2348 2349off(type: 'dataChange', keys: Array<string>, callback?: Callback<Record<string, ValueType>>): void 2350 2351取消精确订阅数据变更。 2352 2353**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2354 2355**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core 2356 2357**参数:** 2358 2359| 参数名 | 类型 | 必填 | 说明 | 2360| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 2361| type | string | 是 | 事件类型,固定值'dataChange',表示精确的数据变更。 | 2362| keys | Array<string> | 是 | 需要取消订阅的key集合,当keys为空数组时,表示取消订阅全部key;当keys为非空数组时,表示只取消订阅key集合中的key。 | 2363| callback | Callback<Record<string, [ValueType](#valuetype)>> | 否 | 需要取消的回调函数,若callback不填写,表示所有的callback都需要处理;若callback填写,表示只处理该callback。 | 2364 2365**错误码:** 2366 2367以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[用户首选项错误码](errorcode-preferences.md)。 2368 2369| 错误码ID | 错误信息 | 2370| -------- | ------------------------------ | 2371| 401 | Parameter error. Possible causes:1. Mandatory parameters are left unspecified;2. Incorrect parameter types;3. Parameter verification failed. | 2372| 15500000 | Inner error. | 2373 2374**示例:** 2375 2376```ts 2377import { BusinessError } from '@kit.BasicServicesKit'; 2378 2379let observer = (data: Record<string, preferences.ValueType>) => { 2380 for (const keyValue of Object.entries(data)) { 2381 console.info(`observer : ${keyValue}`); 2382 } 2383 console.info("The observer called."); 2384} 2385let keys = ['name', 'age']; 2386dataPreferences.on('dataChange', keys, observer); 2387dataPreferences.putSync('name', 'xiaohong'); 2388dataPreferences.putSync('weight', 125); 2389dataPreferences.flush((err: BusinessError) => { 2390 if (err) { 2391 console.error("Failed to flush. Cause: " + err); 2392 return; 2393 } 2394 console.info("Succeeded in flushing."); 2395}) 2396dataPreferences.off('dataChange', keys, observer); 2397``` 2398 2399## ValueType 2400 2401type ValueType = number | string | boolean | Array\<number> | Array\<string> | Array\<boolean> | Uint8Array | object | bigint 2402 2403表示支持的值类型。 2404 2405**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 2406 2407**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core 2408 2409| 类型 | 说明 | 2410|--------------------------|-------------------| 2411| number | 表示值类型为数字。 | 2412| string | 表示值类型为字符串。 | 2413| boolean | 表示值类型为布尔值。 | 2414| Array\<number> | 表示值类型为数字类型的数组。 | 2415| Array\<boolean> | 表示值类型为布尔类型的数组。 | 2416| Array\<string> | 表示值类型为字符串类型的数组。 | 2417| Uint8Array<sup>11+</sup> | 表示值类型为8位无符号整型的数组。 | 2418| object<sup>12+</sup> | 表示值类型为对象。 | 2419| bigint<sup>12+</sup> | 表示值类型为任意精度格式的整数。 | 2420