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