• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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&lt;Preferences&gt;): 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&lt;[Preferences](#preferences)&gt; | 是   | 回调函数。当获取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&lt;Preferences&gt;
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&lt;[Preferences](#preferences)&gt; | 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&lt;Preferences&gt;): 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&lt;[Preferences](#preferences)&gt; | 是   | 回调函数。当获取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&lt;Preferences&gt;
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&lt;[Preferences](#preferences)&gt; | 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&lt;void&gt;): 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&lt;void&gt;             | 是   | 回调函数。当移除成功,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&lt;void&gt;
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&lt;void&gt; | 无返回结果的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&lt;void&gt;): 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&lt;void&gt; | 是   | 回调函数。当移除成功,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&lt;void&gt;
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&lt;void&gt; | 无返回结果的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&lt;void&gt;): 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&lt;void&gt;             | 是   | 回调函数。当移除成功,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&lt;void&gt;
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&lt;void&gt; | 无返回结果的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&lt;void&gt;): 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&lt;void&gt; | 是   | 回调函数。当移除成功,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&lt;void&gt;
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&lt;void&gt; | 无返回结果的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&lt;ValueType&gt;): 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&lt;[ValueType](#valuetype)&gt; | 是   | 回调函数。当获取成功时,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&lt;ValueType&gt;
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)&gt; | 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&lt;Object&gt;): void
1358
1359获取缓存的Preferences实例中的所有键值数据。
1360
1361**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1362
1363**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
1364
1365**参数:**
1366
1367| 参数名   | 类型                        | 必填 | 说明                                                         |
1368| -------- | --------------------------- | ---- | ------------------------------------------------------------ |
1369| callback | AsyncCallback&lt;Object&gt; | 是   | 回调函数。当获取成功,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&lt;Object&gt;
1407
1408获取缓存的Preferences实例中的所有键值数据。
1409
1410**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1411
1412**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
1413
1414**返回值:**
1415
1416| 类型                  | 说明                                        |
1417| --------------------- | ------------------------------------------- |
1418| Promise&lt;Object&gt; | 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&lt;void&gt;): 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&lt;void&gt; | 是   | 回调函数。当数据写入成功,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&lt;void&gt;
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&lt;void&gt; | 无返回结果的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&lt;boolean&gt;): 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&lt;boolean&gt; | 是   | 回调函数。返回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&lt;boolean&gt;
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&lt;boolean&gt; | 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&lt;void&gt;): 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&lt;void&gt; | 是   | 回调函数。当删除成功,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&lt;void&gt;
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&lt;void&gt; | 无返回结果的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&lt;void&gt;): 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&lt;void&gt; | 是   | 回调函数。当保存成功,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&lt;void&gt;
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&lt;void&gt; | 无返回结果的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&lt;void&gt;): 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&lt;void&gt; | 是   | 回调函数。当清除成功,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&lt;void&gt;
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&lt;void&gt; | 无返回结果的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&lt;string&gt;): 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&lt;string&gt; | 是   | 回调函数。     |
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&lt;string&gt;): 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&lt;string&gt; | 是   | 回调函数。                         |
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&lt;string&gt;,  callback: Callback&lt;Record&lt;string, ValueType&gt;&gt;): 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&lt;string&gt;                                          | 是   | 需要订阅的key集合。                                          |
2219| callback | Callback&lt;Record&lt;string, [ValueType](#valuetype)&gt;&gt; | 是   | 回调函数。回调支持返回多个键值对,其中键为发生变更的订阅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&lt;string&gt;): 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&lt;string&gt; | 否   | 需要取消的回调函数,不填写则全部取消。 |
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&lt;string&gt;): 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&lt;string&gt; | 否   | 需要取消的回调函数,不填写则全部取消。 |
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&lt;string&gt;,  callback?: Callback&lt;Record&lt;string, ValueType&gt;&gt;): 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&lt;string&gt;                                          | 是   | 需要取消订阅的key集合,当keys为空数组时,表示取消订阅全部key;当keys为非空数组时,表示只取消订阅key集合中的key。 |
2363| callback | Callback&lt;Record&lt;string, [ValueType](#valuetype)&gt;&gt; | 否   | 需要取消的回调函数,若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