1e41f4b71Sopenharmony_ci# @ohos.data.sendablePreferences (共享用户首选项)
2e41f4b71Sopenharmony_ci
3e41f4b71Sopenharmony_ci
4e41f4b71Sopenharmony_ci共享用户首选项为应用提供Key-Value键值型的数据处理能力,支持应用持久化轻量级数据,并对其修改和查询。
5e41f4b71Sopenharmony_ci
6e41f4b71Sopenharmony_ci数据存储形式为键值对,键的类型为字符串型,值的存储数据类型包括number、string、boolean、bigint以及可序列化的object。
7e41f4b71Sopenharmony_ci
8e41f4b71Sopenharmony_ci共享用户首选项默认加密等级为EL2,持久化文件存储在对应的EL2路径下。设备开机后,若无锁屏密码,可直接访问;若有锁屏密码,此路径下的文件需要至少一次解锁对应用户的锁屏界面后(密码、指纹、人脸等方式解锁皆可)才能够访问。需避免在开机未解锁的情况下访问首选项。修改加密等级的方法请参见[获取和修改加密分区](../../../application-dev/application-models/application-context-stage.md#获取和修改加密分区)。
9e41f4b71Sopenharmony_ci
10e41f4b71Sopenharmony_ci共享用户首选项可以在ArkTS并发实例间(包括主线程、TaskPool&Worker工作线程)传递,传递的行为是引用传递,性能优于普通的[用户首选项](js-apis-data-preferences.md),可参考[Sendable使用场景](../../arkts-utils/sendable-guide.md)。
11e41f4b71Sopenharmony_ci
12e41f4b71Sopenharmony_ci> **说明:**
13e41f4b71Sopenharmony_ci>
14e41f4b71Sopenharmony_ci> 本模块首批接口从API version 12开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
15e41f4b71Sopenharmony_ci>
16e41f4b71Sopenharmony_ci> 共享用户首选项无法保证进程并发安全,会有文件损坏和数据丢失的风险,不支持在多进程场景下使用。
17e41f4b71Sopenharmony_ci
18e41f4b71Sopenharmony_ci## 导入模块
19e41f4b71Sopenharmony_ci
20e41f4b71Sopenharmony_ci```ts
21e41f4b71Sopenharmony_ciimport { sendablePreferences } from '@kit.ArkData';
22e41f4b71Sopenharmony_ci```
23e41f4b71Sopenharmony_ci
24e41f4b71Sopenharmony_ci## 常量
25e41f4b71Sopenharmony_ci
26e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
27e41f4b71Sopenharmony_ci
28e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
29e41f4b71Sopenharmony_ci
30e41f4b71Sopenharmony_ci| 名称             | 参数类型 | 可读 | 可写 | 说明                                    |
31e41f4b71Sopenharmony_ci| ---------------- | -------- | ---- | ---- | --------------------------------------- |
32e41f4b71Sopenharmony_ci| MAX_KEY_LENGTH   | number   | 是   | 否   | Key的最大长度限制为1024个字节。     |
33e41f4b71Sopenharmony_ci| MAX_VALUE_LENGTH | number   | 是   | 否   | Value的最大长度限制为16 * 1024 * 1024个字节。 |
34e41f4b71Sopenharmony_ci
35e41f4b71Sopenharmony_ci## sendablePreferences.getPreferences
36e41f4b71Sopenharmony_ci
37e41f4b71Sopenharmony_cigetPreferences(context: Context, options: Options): Promise<Preferences>
38e41f4b71Sopenharmony_ci
39e41f4b71Sopenharmony_ci获取Preferences实例,使用Promise异步回调。
40e41f4b71Sopenharmony_ci
41e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
42e41f4b71Sopenharmony_ci
43e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
44e41f4b71Sopenharmony_ci
45e41f4b71Sopenharmony_ci**参数:**
46e41f4b71Sopenharmony_ci
47e41f4b71Sopenharmony_ci| 参数名  | 类型             | 必填 | 说明                                                                                                                                                                           |
48e41f4b71Sopenharmony_ci| ------- | ---------------- | ---- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
49e41f4b71Sopenharmony_ci| context | [Context](../apis-ability-kit/js-apis-inner-application-baseContext.md)          | 是   | 应用上下文。 |
50e41f4b71Sopenharmony_ci| options | [Options](#options) | 是   | 与Preferences实例相关的配置选项。        |
51e41f4b71Sopenharmony_ci
52e41f4b71Sopenharmony_ci**返回值:**
53e41f4b71Sopenharmony_ci
54e41f4b71Sopenharmony_ci| 类型                                    | 说明                               |
55e41f4b71Sopenharmony_ci| --------------------------------------- | ---------------------------------- |
56e41f4b71Sopenharmony_ci| Promise&lt;[Preferences](#preferences)&gt; | Promise对象,返回Preferences实例。<br>该实例继承[ISendable](../../arkts-utils/sendable-overview.md#isendable),可以在ArkTS并发实例间(包括主线程、TaskPool&Worker工作线程)传递,传递的行为是引用传递,参考[Sendable使用场景](../../arkts-utils/sendable-guide.md)。 |
57e41f4b71Sopenharmony_ci
58e41f4b71Sopenharmony_ci**错误码:**
59e41f4b71Sopenharmony_ci
60e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[用户首选项错误码](errorcode-preferences.md)。
61e41f4b71Sopenharmony_ci
62e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                        |
63e41f4b71Sopenharmony_ci| -------- | ------------------------------ |
64e41f4b71Sopenharmony_ci| 401      | Parameter error. Possible causes:<br>1. Mandatory parameters are left unspecified;<br>2. Incorrect parameter types;<br>3. Parameter verification failed.                       |
65e41f4b71Sopenharmony_ci| 801      | Capability not supported.     |
66e41f4b71Sopenharmony_ci| 15500000 | Inner error.                   |
67e41f4b71Sopenharmony_ci| 15501001 | Only supported in stage mode. |
68e41f4b71Sopenharmony_ci| 15501002 | The data group id is not valid.     |
69e41f4b71Sopenharmony_ci
70e41f4b71Sopenharmony_ci**示例:**
71e41f4b71Sopenharmony_ci
72e41f4b71Sopenharmony_ci```ts
73e41f4b71Sopenharmony_ciimport { UIAbility } from '@kit.AbilityKit';
74e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
75e41f4b71Sopenharmony_ciimport { window } from '@kit.ArkUI';
76e41f4b71Sopenharmony_ci
77e41f4b71Sopenharmony_cilet preferences: sendablePreferences.Preferences;
78e41f4b71Sopenharmony_ci
79e41f4b71Sopenharmony_ciclass EntryAbility extends UIAbility {
80e41f4b71Sopenharmony_ci  onWindowStageCreate(windowStage: window.WindowStage) {
81e41f4b71Sopenharmony_ci    let options: sendablePreferences.Options = { name: 'myStore' };
82e41f4b71Sopenharmony_ci    let promise = sendablePreferences.getPreferences(this.context, options);
83e41f4b71Sopenharmony_ci    promise.then((object: sendablePreferences.Preferences) => {
84e41f4b71Sopenharmony_ci      preferences = object;
85e41f4b71Sopenharmony_ci      console.info("Succeeded in getting preferences.");
86e41f4b71Sopenharmony_ci    }).catch((err: BusinessError) => {
87e41f4b71Sopenharmony_ci      console.error(`Failed to get preferences. code: ${err.code}, message: ${err.message}`);
88e41f4b71Sopenharmony_ci    })
89e41f4b71Sopenharmony_ci  }
90e41f4b71Sopenharmony_ci}
91e41f4b71Sopenharmony_ci```
92e41f4b71Sopenharmony_ci
93e41f4b71Sopenharmony_ci## sendablePreferences.getPreferencesSync
94e41f4b71Sopenharmony_ci
95e41f4b71Sopenharmony_cigetPreferencesSync(context: Context, options: Options): Preferences
96e41f4b71Sopenharmony_ci
97e41f4b71Sopenharmony_ci获取Preferences实例,此为同步接口。
98e41f4b71Sopenharmony_ci
99e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
100e41f4b71Sopenharmony_ci
101e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
102e41f4b71Sopenharmony_ci
103e41f4b71Sopenharmony_ci**参数:**
104e41f4b71Sopenharmony_ci
105e41f4b71Sopenharmony_ci| 参数名  | 类型                  | 必填 | 说明                                                         |
106e41f4b71Sopenharmony_ci| ------- | --------------------- | ---- | ------------------------------------------------------------ |
107e41f4b71Sopenharmony_ci| context | [Context](../apis-ability-kit/js-apis-inner-application-baseContext.md)               | 是   | 应用上下文。 |
108e41f4b71Sopenharmony_ci| options | [Options](#options) | 是   | 与Preferences实例相关的配置选项。                            |
109e41f4b71Sopenharmony_ci
110e41f4b71Sopenharmony_ci**返回值:**
111e41f4b71Sopenharmony_ci
112e41f4b71Sopenharmony_ci| 类型                        | 说明                  |
113e41f4b71Sopenharmony_ci| --------------------------- | --------------------- |
114e41f4b71Sopenharmony_ci| [Preferences](#preferences) | 返回Preferences实例。<br>该实例继承[ISendable](../../arkts-utils/sendable-overview.md#isendable),可以在ArkTS并发实例间(包括主线程、TaskPool&Worker工作线程)传递,传递的行为是引用传递,参考[Sendable使用场景](../../arkts-utils/sendable-guide.md)。 |
115e41f4b71Sopenharmony_ci
116e41f4b71Sopenharmony_ci**错误码:**
117e41f4b71Sopenharmony_ci
118e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[用户首选项错误码](errorcode-preferences.md)。
119e41f4b71Sopenharmony_ci
120e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                        |
121e41f4b71Sopenharmony_ci| -------- | ------------------------------ |
122e41f4b71Sopenharmony_ci| 401      | Parameter error. Possible causes:<br>1. Mandatory parameters are left unspecified;<br>2. Incorrect parameter types;<br>3. Parameter verification failed.                       |
123e41f4b71Sopenharmony_ci| 801      | Capability not supported.     |
124e41f4b71Sopenharmony_ci| 15500000 | Inner error.                   |
125e41f4b71Sopenharmony_ci| 15501001 | Only supported in stage mode.   |
126e41f4b71Sopenharmony_ci| 15501002 | The data group id is not valid. |
127e41f4b71Sopenharmony_ci
128e41f4b71Sopenharmony_ci**示例:**
129e41f4b71Sopenharmony_ci
130e41f4b71Sopenharmony_ci```ts
131e41f4b71Sopenharmony_ciimport { UIAbility } from '@kit.AbilityKit';
132e41f4b71Sopenharmony_ciimport { window } from '@kit.ArkUI';
133e41f4b71Sopenharmony_ci
134e41f4b71Sopenharmony_cilet preferences: sendablePreferences.Preferences;
135e41f4b71Sopenharmony_ci
136e41f4b71Sopenharmony_ciclass EntryAbility extends UIAbility {
137e41f4b71Sopenharmony_ci  onWindowStageCreate(windowStage: window.WindowStage) {
138e41f4b71Sopenharmony_ci    let options: sendablePreferences.Options = { name: 'myStore' };
139e41f4b71Sopenharmony_ci    preferences = sendablePreferences.getPreferencesSync(this.context, options);
140e41f4b71Sopenharmony_ci  }
141e41f4b71Sopenharmony_ci}
142e41f4b71Sopenharmony_ci```
143e41f4b71Sopenharmony_ci
144e41f4b71Sopenharmony_ci## sendablePreferences.deletePreferences
145e41f4b71Sopenharmony_ci
146e41f4b71Sopenharmony_cideletePreferences(context: Context, options: Options): Promise&lt;void&gt;
147e41f4b71Sopenharmony_ci
148e41f4b71Sopenharmony_ci从缓存中移出指定的Preferences实例,若Preferences实例有对应的持久化文件,则同时删除其持久化文件。使用Promise异步回调。
149e41f4b71Sopenharmony_ci
150e41f4b71Sopenharmony_ci调用该接口后,不建议再使用旧的Preferences实例进行数据操作,否则会出现数据一致性问题。
151e41f4b71Sopenharmony_ci
152e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
153e41f4b71Sopenharmony_ci
154e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
155e41f4b71Sopenharmony_ci
156e41f4b71Sopenharmony_ci**参数:**
157e41f4b71Sopenharmony_ci
158e41f4b71Sopenharmony_ci| 参数名  | 类型             | 必填 | 说明                                                                         |
159e41f4b71Sopenharmony_ci| ------- | ---------------- | ---- | ----------------------------------------------------------------------------|
160e41f4b71Sopenharmony_ci| context | [Context](../apis-ability-kit/js-apis-inner-application-baseContext.md)          | 是   | 应用上下文。 |
161e41f4b71Sopenharmony_ci| options | [Options](#options) | 是   | 与Preferences实例相关的配置选项。                                                                            |
162e41f4b71Sopenharmony_ci
163e41f4b71Sopenharmony_ci**返回值:**
164e41f4b71Sopenharmony_ci
165e41f4b71Sopenharmony_ci| 类型                | 说明                      |
166e41f4b71Sopenharmony_ci| ------------------- | ------------------------- |
167e41f4b71Sopenharmony_ci| Promise&lt;void&gt; | 无返回结果的Promise对象。 |
168e41f4b71Sopenharmony_ci
169e41f4b71Sopenharmony_ci**错误码:**
170e41f4b71Sopenharmony_ci
171e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[用户首选项错误码](errorcode-preferences.md)。
172e41f4b71Sopenharmony_ci
173e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                        |
174e41f4b71Sopenharmony_ci| -------- | ------------------------------ |
175e41f4b71Sopenharmony_ci| 401      | Parameter error. Possible causes:<br>1. Mandatory parameters are left unspecified;<br>2. Incorrect parameter types;<br>3. Parameter verification failed.                       |
176e41f4b71Sopenharmony_ci| 801      | Capability not supported.     |
177e41f4b71Sopenharmony_ci| 15500000 | Inner error.                   |
178e41f4b71Sopenharmony_ci| 15500010 | Failed to delete preferences file. |
179e41f4b71Sopenharmony_ci| 15501001 | Only supported in stage mode. |
180e41f4b71Sopenharmony_ci| 15501002 | The data group id is not valid. |
181e41f4b71Sopenharmony_ci
182e41f4b71Sopenharmony_ci**示例:**
183e41f4b71Sopenharmony_ci
184e41f4b71Sopenharmony_ci```ts
185e41f4b71Sopenharmony_ciimport { UIAbility } from '@kit.AbilityKit';
186e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
187e41f4b71Sopenharmony_ciimport { window } from '@kit.ArkUI';
188e41f4b71Sopenharmony_ci
189e41f4b71Sopenharmony_ciclass EntryAbility extends UIAbility {
190e41f4b71Sopenharmony_ci  onWindowStageCreate(windowStage: window.WindowStage) {
191e41f4b71Sopenharmony_ci    let options: sendablePreferences.Options = { name: 'myStore' };
192e41f4b71Sopenharmony_ci    let promise = sendablePreferences.deletePreferences(this.context, options);
193e41f4b71Sopenharmony_ci    promise.then(() => {
194e41f4b71Sopenharmony_ci      console.info("Succeeded in deleting preferences.");
195e41f4b71Sopenharmony_ci    }).catch((err: BusinessError) => {
196e41f4b71Sopenharmony_ci      console.error(`Failed to delete preferences. code: ${err.code}, message: ${err.message}`);
197e41f4b71Sopenharmony_ci    })
198e41f4b71Sopenharmony_ci  }
199e41f4b71Sopenharmony_ci}
200e41f4b71Sopenharmony_ci```
201e41f4b71Sopenharmony_ci
202e41f4b71Sopenharmony_ci## sendablePreferences.removePreferencesFromCache
203e41f4b71Sopenharmony_ci
204e41f4b71Sopenharmony_ciremovePreferencesFromCache(context: Context, options: Options): Promise&lt;void&gt;
205e41f4b71Sopenharmony_ci
206e41f4b71Sopenharmony_ci从缓存中移出指定的Preferences实例,使用Promise异步回调。
207e41f4b71Sopenharmony_ci
208e41f4b71Sopenharmony_ci应用首次调用[getPreferences](#sendablepreferencesgetpreferences)接口获取某个Preferences实例后,该实例会被会被缓存起来,后续再次[getPreferences](#sendablepreferencesgetpreferences)时不会再次从持久化文件中读取,直接从缓存中获取Preferences实例。调用此接口移出缓存中的实例之后,再次getPreferences将会重新读取持久化文件,生成新的Preferences实例。
209e41f4b71Sopenharmony_ci
210e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
211e41f4b71Sopenharmony_ci
212e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
213e41f4b71Sopenharmony_ci
214e41f4b71Sopenharmony_ci**参数:**
215e41f4b71Sopenharmony_ci
216e41f4b71Sopenharmony_ci| 参数名  | 类型             | 必填 | 说明                                                                                                                      |
217e41f4b71Sopenharmony_ci| ------- | ---------------- | ---- | ----------------------------------------------------------------------------------------------------------------------- |
218e41f4b71Sopenharmony_ci| context | [Context](../apis-ability-kit/js-apis-inner-application-baseContext.md)          | 是   | 应用上下文。 |
219e41f4b71Sopenharmony_ci| options | [Options](#options) | 是   | 与Preferences实例相关的配置选项。                                                                                    |
220e41f4b71Sopenharmony_ci
221e41f4b71Sopenharmony_ci**返回值:**
222e41f4b71Sopenharmony_ci
223e41f4b71Sopenharmony_ci| 类型                | 说明                      |
224e41f4b71Sopenharmony_ci| ------------------- | ------------------------- |
225e41f4b71Sopenharmony_ci| Promise&lt;void&gt; | 无返回结果的Promise对象。 |
226e41f4b71Sopenharmony_ci
227e41f4b71Sopenharmony_ci**错误码:**
228e41f4b71Sopenharmony_ci
229e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[用户首选项错误码](errorcode-preferences.md)。
230e41f4b71Sopenharmony_ci
231e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                        |
232e41f4b71Sopenharmony_ci| -------- | ------------------------------ |
233e41f4b71Sopenharmony_ci| 401      | Parameter error. Possible causes:<br>1. Mandatory parameters are left unspecified;<br>2. Incorrect parameter types;<br>3. Parameter verification failed.                       |
234e41f4b71Sopenharmony_ci| 801      | Capability not supported.     |
235e41f4b71Sopenharmony_ci| 15500000 | Inner error.                   |
236e41f4b71Sopenharmony_ci| 15501001 | Only supported in stage mode. |
237e41f4b71Sopenharmony_ci| 15501002 | The data group id is not valid.     |
238e41f4b71Sopenharmony_ci
239e41f4b71Sopenharmony_ci**示例:**
240e41f4b71Sopenharmony_ci
241e41f4b71Sopenharmony_ci```ts
242e41f4b71Sopenharmony_ciimport { UIAbility } from '@kit.AbilityKit';
243e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
244e41f4b71Sopenharmony_ciimport { window } from '@kit.ArkUI';
245e41f4b71Sopenharmony_ci
246e41f4b71Sopenharmony_ciclass EntryAbility extends UIAbility {
247e41f4b71Sopenharmony_ci  onWindowStageCreate(windowStage: window.WindowStage) {
248e41f4b71Sopenharmony_ci    let options: sendablePreferences.Options = { name: 'myStore' };
249e41f4b71Sopenharmony_ci    let promise = sendablePreferences.removePreferencesFromCache(this.context, options);
250e41f4b71Sopenharmony_ci    promise.then(() => {
251e41f4b71Sopenharmony_ci      console.info("Succeeded in removing preferences.");
252e41f4b71Sopenharmony_ci    }).catch((err: BusinessError) => {
253e41f4b71Sopenharmony_ci      console.error(`Failed to remove preferences. code: ${err.code}, message: ${err.message}`);
254e41f4b71Sopenharmony_ci    })
255e41f4b71Sopenharmony_ci  }
256e41f4b71Sopenharmony_ci}
257e41f4b71Sopenharmony_ci```
258e41f4b71Sopenharmony_ci
259e41f4b71Sopenharmony_ci## sendablePreferences.removePreferencesFromCacheSync
260e41f4b71Sopenharmony_ci
261e41f4b71Sopenharmony_ciremovePreferencesFromCacheSync(context: Context, options: Options):void
262e41f4b71Sopenharmony_ci
263e41f4b71Sopenharmony_ci从缓存中移出指定的Preferences实例,此为同步接口。
264e41f4b71Sopenharmony_ci
265e41f4b71Sopenharmony_ci应用首次调用[getPreferences](#sendablepreferencesgetpreferences)接口获取某个Preferences实例后,该实例会被会被缓存起来,后续再次[getPreferences](#sendablepreferencesgetpreferences)时不会再次从持久化文件中读取,直接从缓存中获取Preferences实例。调用此接口移出缓存中的实例之后,再次getPreferences将会重新读取持久化文件,生成新的Preferences实例。
266e41f4b71Sopenharmony_ci
267e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
268e41f4b71Sopenharmony_ci
269e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
270e41f4b71Sopenharmony_ci
271e41f4b71Sopenharmony_ci**参数:**
272e41f4b71Sopenharmony_ci
273e41f4b71Sopenharmony_ci| 参数名  | 类型                  | 必填 | 说明                                                         |
274e41f4b71Sopenharmony_ci| ------- | --------------------- | ---- | ------------------------------------------------------------ |
275e41f4b71Sopenharmony_ci| context | [Context](../apis-ability-kit/js-apis-inner-application-baseContext.md)               | 是   | 应用上下文。 |
276e41f4b71Sopenharmony_ci| options | [Options](#options) | 是   | 与Preferences实例相关的配置选项。                            |
277e41f4b71Sopenharmony_ci
278e41f4b71Sopenharmony_ci**错误码:**
279e41f4b71Sopenharmony_ci
280e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[用户首选项错误码](errorcode-preferences.md)。
281e41f4b71Sopenharmony_ci
282e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                        |
283e41f4b71Sopenharmony_ci| -------- | ------------------------------ |
284e41f4b71Sopenharmony_ci| 401      | Parameter error. Possible causes:<br>1. Mandatory parameters are left unspecified;<br>2. Incorrect parameter types;<br>3. Parameter verification failed.                       |
285e41f4b71Sopenharmony_ci| 801      | Capability not supported.     |
286e41f4b71Sopenharmony_ci| 15500000 | Inner error.                   |
287e41f4b71Sopenharmony_ci| 15501001 | Only supported in stage mode.   |
288e41f4b71Sopenharmony_ci| 15501002 | The data group id is not valid. |
289e41f4b71Sopenharmony_ci
290e41f4b71Sopenharmony_ci**示例:**
291e41f4b71Sopenharmony_ci
292e41f4b71Sopenharmony_ci```ts
293e41f4b71Sopenharmony_ciimport { UIAbility } from '@kit.AbilityKit';
294e41f4b71Sopenharmony_ciimport { window } from '@kit.ArkUI';
295e41f4b71Sopenharmony_ci
296e41f4b71Sopenharmony_ciclass EntryAbility extends UIAbility {
297e41f4b71Sopenharmony_ci  onWindowStageCreate(windowStage: window.WindowStage) {
298e41f4b71Sopenharmony_ci    let options: sendablePreferences.Options = { name: 'myStore' };
299e41f4b71Sopenharmony_ci    sendablePreferences.removePreferencesFromCacheSync(this.context, options);
300e41f4b71Sopenharmony_ci  }
301e41f4b71Sopenharmony_ci}
302e41f4b71Sopenharmony_ci```
303e41f4b71Sopenharmony_ci
304e41f4b71Sopenharmony_ci## Options
305e41f4b71Sopenharmony_ci
306e41f4b71Sopenharmony_ciPreferences实例配置选项。
307e41f4b71Sopenharmony_ci
308e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
309e41f4b71Sopenharmony_ci
310e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
311e41f4b71Sopenharmony_ci
312e41f4b71Sopenharmony_ci| 名称        | 类型   | 必填 | 说明                                                         |
313e41f4b71Sopenharmony_ci| ----------- | ------ | ---- | ------------------------------------------------------------ |
314e41f4b71Sopenharmony_ci| name        | string | 是   | Preferences实例的名称。                                      |
315e41f4b71Sopenharmony_ci| dataGroupId | string\|null | 否   | 应用组ID,需要向应用市场获取,暂不支持。<br/>为可选参数。指定在此dataGroupId对应的沙箱路径下创建Preferences实例。当此参数不填时,默认在本应用沙箱目录下创建Preferences实例。<br/> **模型约束:** 此属性仅在Stage模型下可用。|
316e41f4b71Sopenharmony_ci
317e41f4b71Sopenharmony_ci
318e41f4b71Sopenharmony_ci## Preferences
319e41f4b71Sopenharmony_ci
320e41f4b71Sopenharmony_ciPreferences继承自[ISendable](../../arkts-utils/sendable-overview.md#isendable),可以在ArkTS并发实例间(包括主线程、TaskPool&Worker工作线程)传递,传递的行为是引用传递,提供获取和修改存储数据的接口。
321e41f4b71Sopenharmony_ci
322e41f4b71Sopenharmony_ci下列接口都需先使用[sendablePreferences.getPreferences](#sendablepreferencesgetpreferences)获取到Preferences实例,再通过此实例调用对应接口。
323e41f4b71Sopenharmony_ci
324e41f4b71Sopenharmony_ci### get
325e41f4b71Sopenharmony_ci
326e41f4b71Sopenharmony_ciget(key: string, defValue: lang.ISendable): Promise&lt;lang.ISendable&gt;
327e41f4b71Sopenharmony_ci
328e41f4b71Sopenharmony_ci从缓存的Preferences实例中获取键对应的值,如果值为null或者非默认值类型,返回默认数据defValue,使用Promise异步回调。
329e41f4b71Sopenharmony_ci
330e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
331e41f4b71Sopenharmony_ci
332e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
333e41f4b71Sopenharmony_ci
334e41f4b71Sopenharmony_ci **参数:**
335e41f4b71Sopenharmony_ci
336e41f4b71Sopenharmony_ci| 参数名   | 类型                    | 必填 | 说明  |
337e41f4b71Sopenharmony_ci| -------- | ----------------------- | ---- |--------|
338e41f4b71Sopenharmony_ci| key      | string                  | 是   | 要获取的存储Key名称,不能为空。  |
339e41f4b71Sopenharmony_ci| defValue | [lang.ISendable](../../arkts-utils/sendable-overview.md#isendable) | 是   | 默认返回值。 |
340e41f4b71Sopenharmony_ci
341e41f4b71Sopenharmony_ci**返回值:**
342e41f4b71Sopenharmony_ci
343e41f4b71Sopenharmony_ci| 类型                                | 说明                          |
344e41f4b71Sopenharmony_ci| ----------------------------------- | ----------------------------- |
345e41f4b71Sopenharmony_ci| Promise&lt;[lang.ISendable](../../arkts-utils/sendable-overview.md#isendable)&gt; | Promise对象,返回键对应的值。 <br>该实例继承[ISendable](../../arkts-utils/sendable-overview.md#isendable),可以在ArkTS并发实例间(包括主线程、TaskPool&Worker工作线程)传递,传递的行为是引用传递,参考[Sendable使用场景](../../arkts-utils/sendable-guide.md)。|
346e41f4b71Sopenharmony_ci
347e41f4b71Sopenharmony_ci**错误码:**
348e41f4b71Sopenharmony_ci
349e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[用户首选项错误码](errorcode-preferences.md)。
350e41f4b71Sopenharmony_ci
351e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                        |
352e41f4b71Sopenharmony_ci| -------- | ------------------------------ |
353e41f4b71Sopenharmony_ci| 401      | Parameter error. Possible causes:<br>1. Mandatory parameters are left unspecified;<br>2. Incorrect parameter types;<br>3. Parameter verification failed.                       |
354e41f4b71Sopenharmony_ci| 15500000 | Inner error.                   |
355e41f4b71Sopenharmony_ci
356e41f4b71Sopenharmony_ci**示例:**
357e41f4b71Sopenharmony_ci
358e41f4b71Sopenharmony_ci```ts
359e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
360e41f4b71Sopenharmony_ciimport { lang } from '@kit.ArkTS';
361e41f4b71Sopenharmony_ci
362e41f4b71Sopenharmony_cilet promise = preferences.get('startup', 'default');
363e41f4b71Sopenharmony_cipromise.then((data: lang.ISendable) => {
364e41f4b71Sopenharmony_ci  let dataStr = data as string;
365e41f4b71Sopenharmony_ci  console.info(`Succeeded in getting value of 'startup'. Data: ${dataStr}`);
366e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => {
367e41f4b71Sopenharmony_ci  console.error(`Failed to get value of 'startup'. code: ${err.code}, message: ${err.message}`);
368e41f4b71Sopenharmony_ci})
369e41f4b71Sopenharmony_ci```
370e41f4b71Sopenharmony_ci
371e41f4b71Sopenharmony_ci### getSync
372e41f4b71Sopenharmony_ci
373e41f4b71Sopenharmony_cigetSync(key: string, defValue: lang.ISendable): lang.ISendable
374e41f4b71Sopenharmony_ci
375e41f4b71Sopenharmony_ci从缓存的Preferences实例中获取键对应的值,如果值为null或者非默认值类型,返回默认数据defValue,此为同步接口。
376e41f4b71Sopenharmony_ci
377e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
378e41f4b71Sopenharmony_ci
379e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
380e41f4b71Sopenharmony_ci
381e41f4b71Sopenharmony_ci**参数:**
382e41f4b71Sopenharmony_ci
383e41f4b71Sopenharmony_ci| 参数名   | 类型                    | 必填 | 说明            |
384e41f4b71Sopenharmony_ci| -------- | ----------------------- | ---- |---------------------|
385e41f4b71Sopenharmony_ci| key      | string                  | 是   | 要获取的存储Key名称,不能为空。  |
386e41f4b71Sopenharmony_ci| defValue | [lang.ISendable](../../arkts-utils/sendable-overview.md#isendable) | 是   | 默认返回值。 |
387e41f4b71Sopenharmony_ci
388e41f4b71Sopenharmony_ci**返回值:**
389e41f4b71Sopenharmony_ci
390e41f4b71Sopenharmony_ci| 类型                                | 说明                          |
391e41f4b71Sopenharmony_ci| ----------------------------------- | ----------------------------- |
392e41f4b71Sopenharmony_ci| [lang.ISendable](../../arkts-utils/sendable-overview.md#isendable) | 返回键对应的值。 <br>该实例继承[ISendable](../../arkts-utils/sendable-overview.md#isendable),可以在ArkTS并发实例间(包括主线程、TaskPool&Worker工作线程)传递,传递的行为是引用传递,参考[Sendable使用场景](../../arkts-utils/sendable-guide.md)。|
393e41f4b71Sopenharmony_ci
394e41f4b71Sopenharmony_ci**错误码:**
395e41f4b71Sopenharmony_ci
396e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[用户首选项错误码](errorcode-preferences.md)。
397e41f4b71Sopenharmony_ci
398e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                        |
399e41f4b71Sopenharmony_ci| -------- | ------------------------------ |
400e41f4b71Sopenharmony_ci| 401      | Parameter error. Possible causes:<br>1. Mandatory parameters are left unspecified;<br>2. Incorrect parameter types;<br>3. Parameter verification failed.                       |
401e41f4b71Sopenharmony_ci| 15500000 | Inner error.                   |
402e41f4b71Sopenharmony_ci
403e41f4b71Sopenharmony_ci**示例:**
404e41f4b71Sopenharmony_ci
405e41f4b71Sopenharmony_ci```ts
406e41f4b71Sopenharmony_ciimport { lang } from '@kit.ArkTS';
407e41f4b71Sopenharmony_cilet value: lang.ISendable = preferences.getSync('startup', 'default');
408e41f4b71Sopenharmony_ci```
409e41f4b71Sopenharmony_ci
410e41f4b71Sopenharmony_ci### getAll
411e41f4b71Sopenharmony_ci
412e41f4b71Sopenharmony_cigetAll(): Promise&lt;lang.ISendable&gt;
413e41f4b71Sopenharmony_ci
414e41f4b71Sopenharmony_ci从缓存的Preferences实例中获取所有键值数据。
415e41f4b71Sopenharmony_ci
416e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
417e41f4b71Sopenharmony_ci
418e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
419e41f4b71Sopenharmony_ci
420e41f4b71Sopenharmony_ci**返回值:**
421e41f4b71Sopenharmony_ci
422e41f4b71Sopenharmony_ci| 类型                  | 说明                                        |
423e41f4b71Sopenharmony_ci| --------------------- | ------------------------------------------- |
424e41f4b71Sopenharmony_ci| Promise&lt;[lang.ISendable](../../arkts-utils/sendable-overview.md#isendable)&gt; | Promise对象,返回含有所有键值数据。 <br>该对象继承[ISendable](../../arkts-utils/sendable-overview.md#isendable),可以在ArkTS并发实例间(包括主线程、TaskPool&Worker工作线程)传递,传递的行为是引用传递,参考[Sendable使用场景](../../arkts-utils/sendable-guide.md)。  |
425e41f4b71Sopenharmony_ci
426e41f4b71Sopenharmony_ci**错误码:**
427e41f4b71Sopenharmony_ci
428e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[用户首选项错误码](errorcode-preferences.md)。
429e41f4b71Sopenharmony_ci
430e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                        |
431e41f4b71Sopenharmony_ci| -------- | ------------------------------ |
432e41f4b71Sopenharmony_ci| 15500000 | Inner error.                   |
433e41f4b71Sopenharmony_ci
434e41f4b71Sopenharmony_ci**示例:**
435e41f4b71Sopenharmony_ci
436e41f4b71Sopenharmony_ci```ts
437e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
438e41f4b71Sopenharmony_ciimport { lang } from '@kit.ArkTS';
439e41f4b71Sopenharmony_ci
440e41f4b71Sopenharmony_cilet promise = preferences.getAll();
441e41f4b71Sopenharmony_cipromise.then((keyValues: lang.ISendable) => {
442e41f4b71Sopenharmony_ci  for (let value of Object.keys(keyValues)) {
443e41f4b71Sopenharmony_ci    console.info("getAll " + JSON.stringify(value));
444e41f4b71Sopenharmony_ci  }
445e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => {
446e41f4b71Sopenharmony_ci  console.error(`Failed to get all key-values. code: ${err.code}, message: ${err.message}`);
447e41f4b71Sopenharmony_ci})
448e41f4b71Sopenharmony_ci```
449e41f4b71Sopenharmony_ci
450e41f4b71Sopenharmony_ci### getAllSync
451e41f4b71Sopenharmony_ci
452e41f4b71Sopenharmony_cigetAllSync(): lang.ISendable
453e41f4b71Sopenharmony_ci
454e41f4b71Sopenharmony_ci从缓存的Preferences实例中获取所有键值数据,此为同步接口。
455e41f4b71Sopenharmony_ci
456e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
457e41f4b71Sopenharmony_ci
458e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
459e41f4b71Sopenharmony_ci
460e41f4b71Sopenharmony_ci**返回值:**
461e41f4b71Sopenharmony_ci
462e41f4b71Sopenharmony_ci| 类型                  | 说明                                        |
463e41f4b71Sopenharmony_ci| --------------------- | ------------------------------------------- |
464e41f4b71Sopenharmony_ci| [lang.ISendable](../../arkts-utils/sendable-overview.md#isendable) | 返回含有所有键值数据。<br>该对象继承[ISendable](../../arkts-utils/sendable-overview.md#isendable),可以在ArkTS并发实例间(包括主线程、TaskPool&Worker工作线程)传递,传递的行为是引用传递,参考[Sendable使用场景](../../arkts-utils/sendable-guide.md)。 |
465e41f4b71Sopenharmony_ci
466e41f4b71Sopenharmony_ci**错误码:**
467e41f4b71Sopenharmony_ci
468e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[用户首选项错误码](errorcode-preferences.md)。
469e41f4b71Sopenharmony_ci
470e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                        |
471e41f4b71Sopenharmony_ci| -------- | ------------------------------ |
472e41f4b71Sopenharmony_ci| 15500000 | Inner error.                   |
473e41f4b71Sopenharmony_ci
474e41f4b71Sopenharmony_ci**示例:**
475e41f4b71Sopenharmony_ci
476e41f4b71Sopenharmony_ci```ts
477e41f4b71Sopenharmony_ciimport { lang } from '@kit.ArkTS';
478e41f4b71Sopenharmony_ci
479e41f4b71Sopenharmony_cilet keyValues: lang.ISendable = preferences.getAllSync();
480e41f4b71Sopenharmony_cifor (let value of Object.keys(keyValues)) {
481e41f4b71Sopenharmony_ci  console.info("getAll " + JSON.stringify(value));
482e41f4b71Sopenharmony_ci}
483e41f4b71Sopenharmony_ci```
484e41f4b71Sopenharmony_ci
485e41f4b71Sopenharmony_ci### put
486e41f4b71Sopenharmony_ci
487e41f4b71Sopenharmony_ciput(key: string, value: lang.ISendable): Promise&lt;void&gt;
488e41f4b71Sopenharmony_ci
489e41f4b71Sopenharmony_ci将数据写入缓存的Preferences实例中,可通过[flush](#flush)将Preferences实例持久化,使用Promise异步回调。
490e41f4b71Sopenharmony_ci
491e41f4b71Sopenharmony_ci  > **说明:**
492e41f4b71Sopenharmony_ci  >
493e41f4b71Sopenharmony_ci  > 当对应的键已经存在时,put()方法会覆盖其值。可以使用hasSync()方法检查是否存在对应键值对。
494e41f4b71Sopenharmony_ci
495e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
496e41f4b71Sopenharmony_ci
497e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
498e41f4b71Sopenharmony_ci
499e41f4b71Sopenharmony_ci**参数:**
500e41f4b71Sopenharmony_ci
501e41f4b71Sopenharmony_ci| 参数名 | 类型                    | 必填 | 说明                         |
502e41f4b71Sopenharmony_ci| ------ | ----------------------- | ---- |--------------------------|
503e41f4b71Sopenharmony_ci| key    | string                  | 是   | 要修改的存储的Key,不能为空。  |
504e41f4b71Sopenharmony_ci| value  | [lang.ISendable](../../arkts-utils/sendable-overview.md#isendable) | 是   | 存储的新值。 |
505e41f4b71Sopenharmony_ci
506e41f4b71Sopenharmony_ci**返回值:**
507e41f4b71Sopenharmony_ci
508e41f4b71Sopenharmony_ci| 类型                | 说明                      |
509e41f4b71Sopenharmony_ci| ------------------- | ------------------------- |
510e41f4b71Sopenharmony_ci| Promise&lt;void&gt; | 无返回结果的Promise对象。 |
511e41f4b71Sopenharmony_ci
512e41f4b71Sopenharmony_ci**错误码:**
513e41f4b71Sopenharmony_ci
514e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[用户首选项错误码](errorcode-preferences.md)。
515e41f4b71Sopenharmony_ci
516e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                        |
517e41f4b71Sopenharmony_ci| -------- | ------------------------------ |
518e41f4b71Sopenharmony_ci| 401      | Parameter error. Possible causes:<br>1. Mandatory parameters are left unspecified;<br>2. Incorrect parameter types;<br>3. Parameter verification failed.                       |
519e41f4b71Sopenharmony_ci| 15500000 | Inner error.                   |
520e41f4b71Sopenharmony_ci
521e41f4b71Sopenharmony_ci**示例:**
522e41f4b71Sopenharmony_ci
523e41f4b71Sopenharmony_ci```ts
524e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
525e41f4b71Sopenharmony_ci
526e41f4b71Sopenharmony_cilet promise = preferences.put('startup', 'auto');
527e41f4b71Sopenharmony_cipromise.then(() => {
528e41f4b71Sopenharmony_ci  console.info("Succeeded in putting value of 'startup'.");
529e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => {
530e41f4b71Sopenharmony_ci  console.error(`Failed to put value of 'startup'. code: ${err.code}, message: ${err.message}`);
531e41f4b71Sopenharmony_ci})
532e41f4b71Sopenharmony_ci```
533e41f4b71Sopenharmony_ci
534e41f4b71Sopenharmony_ci### putSync
535e41f4b71Sopenharmony_ci
536e41f4b71Sopenharmony_ciputSync(key: string, value: lang.ISendable): void
537e41f4b71Sopenharmony_ci
538e41f4b71Sopenharmony_ci将数据写入缓存的Preferences实例中,可通过[flush](#flush)将Preferences实例持久化,此为同步接口。
539e41f4b71Sopenharmony_ci
540e41f4b71Sopenharmony_ci  > **说明:**
541e41f4b71Sopenharmony_ci  >
542e41f4b71Sopenharmony_ci  > 当对应的键已经存在时,putSync()方法会覆盖其值。可以使用hasSync()方法检查是否存在对应键值对。
543e41f4b71Sopenharmony_ci
544e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
545e41f4b71Sopenharmony_ci
546e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
547e41f4b71Sopenharmony_ci
548e41f4b71Sopenharmony_ci**参数:**
549e41f4b71Sopenharmony_ci
550e41f4b71Sopenharmony_ci| 参数名 | 类型                    | 必填 | 说明                                                         |
551e41f4b71Sopenharmony_ci| ------ | ----------------------- | ---- | ------------------------ |
552e41f4b71Sopenharmony_ci| key    | string                  | 是   | 要修改的存储的Key,不能为空。 |
553e41f4b71Sopenharmony_ci| value  | [lang.ISendable](../../arkts-utils/sendable-overview.md#isendable) | 是   | 存储的新值。 |
554e41f4b71Sopenharmony_ci
555e41f4b71Sopenharmony_ci**错误码:**
556e41f4b71Sopenharmony_ci
557e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[用户首选项错误码](errorcode-preferences.md)。
558e41f4b71Sopenharmony_ci
559e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                        |
560e41f4b71Sopenharmony_ci| -------- | ------------------------------ |
561e41f4b71Sopenharmony_ci| 401      | Parameter error. Possible causes:<br>1. Mandatory parameters are left unspecified;<br>2. Incorrect parameter types;<br>3. Parameter verification failed.                       |
562e41f4b71Sopenharmony_ci| 15500000 | Inner error.                   |
563e41f4b71Sopenharmony_ci
564e41f4b71Sopenharmony_ci**示例:**
565e41f4b71Sopenharmony_ci
566e41f4b71Sopenharmony_ci```ts
567e41f4b71Sopenharmony_cipreferences.putSync('startup', 'auto');
568e41f4b71Sopenharmony_ci```
569e41f4b71Sopenharmony_ci
570e41f4b71Sopenharmony_ci### has
571e41f4b71Sopenharmony_ci
572e41f4b71Sopenharmony_cihas(key: string): Promise&lt;boolean&gt;
573e41f4b71Sopenharmony_ci
574e41f4b71Sopenharmony_ci检查缓存的Preferences实例中是否包含名为给定Key的存储键值对,使用Promise异步回调。
575e41f4b71Sopenharmony_ci
576e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
577e41f4b71Sopenharmony_ci
578e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
579e41f4b71Sopenharmony_ci
580e41f4b71Sopenharmony_ci**参数:**
581e41f4b71Sopenharmony_ci
582e41f4b71Sopenharmony_ci| 参数名 | 类型   | 必填 | 说明                            |
583e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------------- |
584e41f4b71Sopenharmony_ci| key    | string | 是   | 要检查的存储key名称,不能为空。 |
585e41f4b71Sopenharmony_ci
586e41f4b71Sopenharmony_ci**返回值:**
587e41f4b71Sopenharmony_ci
588e41f4b71Sopenharmony_ci| 类型                   | 说明                                                         |
589e41f4b71Sopenharmony_ci| ---------------------- | ------------------------------------------------------------ |
590e41f4b71Sopenharmony_ci| Promise&lt;boolean&gt; | Promise对象。返回Preferences实例是否包含给定key的存储键值对,true表示存在,false表示不存在。 |
591e41f4b71Sopenharmony_ci
592e41f4b71Sopenharmony_ci**错误码:**
593e41f4b71Sopenharmony_ci
594e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[用户首选项错误码](errorcode-preferences.md)。
595e41f4b71Sopenharmony_ci
596e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                        |
597e41f4b71Sopenharmony_ci| -------- | ------------------------------ |
598e41f4b71Sopenharmony_ci| 401      | Parameter error. Possible causes:<br>1. Mandatory parameters are left unspecified;<br>2. Incorrect parameter types;<br>3. Parameter verification failed.                       |
599e41f4b71Sopenharmony_ci| 15500000 | Inner error.                   |
600e41f4b71Sopenharmony_ci
601e41f4b71Sopenharmony_ci**示例:**
602e41f4b71Sopenharmony_ci
603e41f4b71Sopenharmony_ci```ts
604e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
605e41f4b71Sopenharmony_ci
606e41f4b71Sopenharmony_cilet promise = preferences.has('startup');
607e41f4b71Sopenharmony_cipromise.then((val: boolean) => {
608e41f4b71Sopenharmony_ci  if (val) {
609e41f4b71Sopenharmony_ci    console.info("The key 'startup' is contained.");
610e41f4b71Sopenharmony_ci  } else {
611e41f4b71Sopenharmony_ci    console.error("The key 'startup' dose not contain.");
612e41f4b71Sopenharmony_ci  }
613e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => {
614e41f4b71Sopenharmony_ci  console.error(`Failed to check the key 'startup'. code: ${err.code}, message: ${err.message}`);
615e41f4b71Sopenharmony_ci})
616e41f4b71Sopenharmony_ci```
617e41f4b71Sopenharmony_ci
618e41f4b71Sopenharmony_ci### hasSync
619e41f4b71Sopenharmony_ci
620e41f4b71Sopenharmony_cihasSync(key: string): boolean
621e41f4b71Sopenharmony_ci
622e41f4b71Sopenharmony_ci检查缓存的Preferences实例中是否包含名为给定Key的存储键值对,此为同步接口。
623e41f4b71Sopenharmony_ci
624e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
625e41f4b71Sopenharmony_ci
626e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
627e41f4b71Sopenharmony_ci
628e41f4b71Sopenharmony_ci**参数:**
629e41f4b71Sopenharmony_ci
630e41f4b71Sopenharmony_ci| 参数名 | 类型   | 必填 | 说明                            |
631e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------------- |
632e41f4b71Sopenharmony_ci| key    | string | 是   | 要检查的存储key名称,不能为空。 |
633e41f4b71Sopenharmony_ci
634e41f4b71Sopenharmony_ci**返回值:**
635e41f4b71Sopenharmony_ci
636e41f4b71Sopenharmony_ci| 类型                   | 说明                                                         |
637e41f4b71Sopenharmony_ci| ---------------------- | ------------------------------------------------------------ |
638e41f4b71Sopenharmony_ci| boolean | 返回Preferences实例是否包含给定key的存储键值对,true表示存在,false表示不存在。 |
639e41f4b71Sopenharmony_ci
640e41f4b71Sopenharmony_ci**错误码:**
641e41f4b71Sopenharmony_ci
642e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[用户首选项错误码](errorcode-preferences.md)。
643e41f4b71Sopenharmony_ci
644e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                        |
645e41f4b71Sopenharmony_ci| -------- | ------------------------------ |
646e41f4b71Sopenharmony_ci| 401      | Parameter error. Possible causes:<br>1. Mandatory parameters are left unspecified;<br>2. Incorrect parameter types;<br>3. Parameter verification failed.                       |
647e41f4b71Sopenharmony_ci| 15500000 | Inner error.                   |
648e41f4b71Sopenharmony_ci
649e41f4b71Sopenharmony_ci**示例:**
650e41f4b71Sopenharmony_ci
651e41f4b71Sopenharmony_ci```ts
652e41f4b71Sopenharmony_cilet isExist: boolean = preferences.hasSync('startup');
653e41f4b71Sopenharmony_ciif (isExist) {
654e41f4b71Sopenharmony_ci  console.info("The key 'startup' is contained.");
655e41f4b71Sopenharmony_ci} else {
656e41f4b71Sopenharmony_ci  console.error("The key 'startup' dose not contain.");
657e41f4b71Sopenharmony_ci}
658e41f4b71Sopenharmony_ci```
659e41f4b71Sopenharmony_ci
660e41f4b71Sopenharmony_ci### delete
661e41f4b71Sopenharmony_ci
662e41f4b71Sopenharmony_cidelete(key: string): Promise&lt;void&gt;
663e41f4b71Sopenharmony_ci
664e41f4b71Sopenharmony_ci从缓存的Preferences实例中删除名为给定Key的存储键值对,可通过[flush](#flush)将Preferences实例持久化,使用Promise异步回调。
665e41f4b71Sopenharmony_ci
666e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
667e41f4b71Sopenharmony_ci
668e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
669e41f4b71Sopenharmony_ci
670e41f4b71Sopenharmony_ci**参数:**
671e41f4b71Sopenharmony_ci
672e41f4b71Sopenharmony_ci| 参数名 | 类型   | 必填 | 说明                            |
673e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------------- |
674e41f4b71Sopenharmony_ci| key    | string | 是   | 要删除的存储key名称,不能为空。 |
675e41f4b71Sopenharmony_ci
676e41f4b71Sopenharmony_ci**返回值:**
677e41f4b71Sopenharmony_ci
678e41f4b71Sopenharmony_ci| 类型                | 说明                      |
679e41f4b71Sopenharmony_ci| ------------------- | ------------------------- |
680e41f4b71Sopenharmony_ci| Promise&lt;void&gt; | 无返回结果的Promise对象。 |
681e41f4b71Sopenharmony_ci
682e41f4b71Sopenharmony_ci**错误码:**
683e41f4b71Sopenharmony_ci
684e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[用户首选项错误码](errorcode-preferences.md)。
685e41f4b71Sopenharmony_ci
686e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                        |
687e41f4b71Sopenharmony_ci| -------- | ------------------------------ |
688e41f4b71Sopenharmony_ci| 401      | Parameter error. Possible causes:<br>1. Mandatory parameters are left unspecified;<br>2. Incorrect parameter types;<br>3. Parameter verification failed.                       |
689e41f4b71Sopenharmony_ci| 15500000 | Inner error.                   |
690e41f4b71Sopenharmony_ci
691e41f4b71Sopenharmony_ci**示例:**
692e41f4b71Sopenharmony_ci
693e41f4b71Sopenharmony_ci```ts
694e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
695e41f4b71Sopenharmony_ci
696e41f4b71Sopenharmony_cilet promise = preferences.delete('startup');
697e41f4b71Sopenharmony_cipromise.then(() => {
698e41f4b71Sopenharmony_ci  console.info("Succeeded in deleting the key 'startup'.");
699e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => {
700e41f4b71Sopenharmony_ci  console.error(`Failed to delete the key 'startup'. code: ${err.code}, message: ${err.message}`);
701e41f4b71Sopenharmony_ci})
702e41f4b71Sopenharmony_ci```
703e41f4b71Sopenharmony_ci
704e41f4b71Sopenharmony_ci### deleteSync
705e41f4b71Sopenharmony_ci
706e41f4b71Sopenharmony_cideleteSync(key: string): void
707e41f4b71Sopenharmony_ci
708e41f4b71Sopenharmony_ci从缓存的Preferences实例中删除名为给定Key的存储键值对,可通过[flush](#flush)将Preferences实例持久化,此为同步接口。
709e41f4b71Sopenharmony_ci
710e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
711e41f4b71Sopenharmony_ci
712e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
713e41f4b71Sopenharmony_ci
714e41f4b71Sopenharmony_ci**参数:**
715e41f4b71Sopenharmony_ci
716e41f4b71Sopenharmony_ci| 参数名 | 类型   | 必填 | 说明                            |
717e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------------- |
718e41f4b71Sopenharmony_ci| key    | string | 是   | 要删除的存储key名称,不能为空。 |
719e41f4b71Sopenharmony_ci
720e41f4b71Sopenharmony_ci**错误码:**
721e41f4b71Sopenharmony_ci
722e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[用户首选项错误码](errorcode-preferences.md)。
723e41f4b71Sopenharmony_ci
724e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                        |
725e41f4b71Sopenharmony_ci| -------- | ------------------------------ |
726e41f4b71Sopenharmony_ci| 401      | Parameter error. Possible causes:<br>1. Mandatory parameters are left unspecified;<br>2. Incorrect parameter types;<br>3. Parameter verification failed.                       |
727e41f4b71Sopenharmony_ci| 15500000 | Inner error.                   |
728e41f4b71Sopenharmony_ci
729e41f4b71Sopenharmony_ci**示例:**
730e41f4b71Sopenharmony_ci
731e41f4b71Sopenharmony_ci```ts
732e41f4b71Sopenharmony_cipreferences.deleteSync('startup');
733e41f4b71Sopenharmony_ci```
734e41f4b71Sopenharmony_ci
735e41f4b71Sopenharmony_ci### flush
736e41f4b71Sopenharmony_ci
737e41f4b71Sopenharmony_ciflush(): Promise&lt;void&gt;
738e41f4b71Sopenharmony_ci
739e41f4b71Sopenharmony_ci将缓存的Preferences实例中的数据异步存储到共享用户首选项的持久化文件中,使用Promise异步回调。
740e41f4b71Sopenharmony_ci
741e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
742e41f4b71Sopenharmony_ci
743e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
744e41f4b71Sopenharmony_ci
745e41f4b71Sopenharmony_ci**返回值:**
746e41f4b71Sopenharmony_ci
747e41f4b71Sopenharmony_ci| 类型                | 说明                      |
748e41f4b71Sopenharmony_ci| ------------------- | ------------------------- |
749e41f4b71Sopenharmony_ci| Promise&lt;void&gt; | 无返回结果的Promise对象。 |
750e41f4b71Sopenharmony_ci
751e41f4b71Sopenharmony_ci**错误码:**
752e41f4b71Sopenharmony_ci
753e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[用户首选项错误码](errorcode-preferences.md)。
754e41f4b71Sopenharmony_ci
755e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                        |
756e41f4b71Sopenharmony_ci| -------- | ------------------------------ |
757e41f4b71Sopenharmony_ci| 15500000 | Inner error.                   |
758e41f4b71Sopenharmony_ci
759e41f4b71Sopenharmony_ci**示例:**
760e41f4b71Sopenharmony_ci
761e41f4b71Sopenharmony_ci```ts
762e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
763e41f4b71Sopenharmony_ci
764e41f4b71Sopenharmony_cilet promise = preferences.flush();
765e41f4b71Sopenharmony_cipromise.then(() => {
766e41f4b71Sopenharmony_ci  console.info("Succeeded in flushing.");
767e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => {
768e41f4b71Sopenharmony_ci  console.error(`Failed to flush. code: ${err.code}, message: ${err.message}`);
769e41f4b71Sopenharmony_ci})
770e41f4b71Sopenharmony_ci```
771e41f4b71Sopenharmony_ci
772e41f4b71Sopenharmony_ci### clear
773e41f4b71Sopenharmony_ci
774e41f4b71Sopenharmony_ciclear(): Promise&lt;void&gt;
775e41f4b71Sopenharmony_ci
776e41f4b71Sopenharmony_ci清除缓存的Preferences实例中的所有数据,可通过[flush](#flush)将Preferences实例持久化,使用Promise异步回调。
777e41f4b71Sopenharmony_ci
778e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
779e41f4b71Sopenharmony_ci
780e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
781e41f4b71Sopenharmony_ci
782e41f4b71Sopenharmony_ci**返回值:**
783e41f4b71Sopenharmony_ci
784e41f4b71Sopenharmony_ci| 类型                | 说明                      |
785e41f4b71Sopenharmony_ci| ------------------- | ------------------------- |
786e41f4b71Sopenharmony_ci| Promise&lt;void&gt; | 无返回结果的Promise对象。 |
787e41f4b71Sopenharmony_ci
788e41f4b71Sopenharmony_ci**错误码:**
789e41f4b71Sopenharmony_ci
790e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[用户首选项错误码](errorcode-preferences.md)。
791e41f4b71Sopenharmony_ci
792e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                        |
793e41f4b71Sopenharmony_ci| -------- | ------------------------------ |
794e41f4b71Sopenharmony_ci| 15500000 | Inner error.                   |
795e41f4b71Sopenharmony_ci
796e41f4b71Sopenharmony_ci**示例:**
797e41f4b71Sopenharmony_ci
798e41f4b71Sopenharmony_ci```ts
799e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
800e41f4b71Sopenharmony_ci
801e41f4b71Sopenharmony_cilet promise = preferences.clear();
802e41f4b71Sopenharmony_cipromise.then(() => {
803e41f4b71Sopenharmony_ci  console.info("Succeeded in clearing.");
804e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => {
805e41f4b71Sopenharmony_ci  console.error(`Failed to clear. code: ${err.code}, message: ${err.message}`);
806e41f4b71Sopenharmony_ci})
807e41f4b71Sopenharmony_ci```
808e41f4b71Sopenharmony_ci
809e41f4b71Sopenharmony_ci### clearSync
810e41f4b71Sopenharmony_ci
811e41f4b71Sopenharmony_ciclearSync(): void
812e41f4b71Sopenharmony_ci
813e41f4b71Sopenharmony_ci清除缓存的Preferences实例中的所有数据,可通过[flush](#flush)将Preferences实例持久化,此为同步接口。
814e41f4b71Sopenharmony_ci
815e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
816e41f4b71Sopenharmony_ci
817e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
818e41f4b71Sopenharmony_ci
819e41f4b71Sopenharmony_ci**错误码:**
820e41f4b71Sopenharmony_ci
821e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[用户首选项错误码](errorcode-preferences.md)。
822e41f4b71Sopenharmony_ci
823e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                        |
824e41f4b71Sopenharmony_ci| -------- | ------------------------------ |
825e41f4b71Sopenharmony_ci| 15500000 | Inner error.                   |
826e41f4b71Sopenharmony_ci
827e41f4b71Sopenharmony_ci**示例:**
828e41f4b71Sopenharmony_ci
829e41f4b71Sopenharmony_ci```ts
830e41f4b71Sopenharmony_cipreferences.clearSync();
831e41f4b71Sopenharmony_ci```
832e41f4b71Sopenharmony_ci
833e41f4b71Sopenharmony_ci### on('change')
834e41f4b71Sopenharmony_ci
835e41f4b71Sopenharmony_cion(type: 'change', callback: Callback&lt;string&gt;): void
836e41f4b71Sopenharmony_ci
837e41f4b71Sopenharmony_ci订阅数据变更,订阅的Key的值发生变更后,在执行[flush](#flush)方法后,触发callback回调。
838e41f4b71Sopenharmony_ci
839e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
840e41f4b71Sopenharmony_ci
841e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
842e41f4b71Sopenharmony_ci
843e41f4b71Sopenharmony_ci**参数:**
844e41f4b71Sopenharmony_ci
845e41f4b71Sopenharmony_ci| 参数名   | 类型     | 必填 | 说明                                     |
846e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ---------------------------------------- |
847e41f4b71Sopenharmony_ci| type     | string   | 是   | 事件类型,固定值'change',表示数据变更。 |
848e41f4b71Sopenharmony_ci| callback | Callback&lt;string&gt; | 是   | 回调函数。返回发生变更的Key。     |
849e41f4b71Sopenharmony_ci
850e41f4b71Sopenharmony_ci**错误码:**
851e41f4b71Sopenharmony_ci
852e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[用户首选项错误码](errorcode-preferences.md)。
853e41f4b71Sopenharmony_ci
854e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                        |
855e41f4b71Sopenharmony_ci| -------- | ------------------------------ |
856e41f4b71Sopenharmony_ci| 401      | Parameter error. Possible causes:<br>1. Mandatory parameters are left unspecified;<br>2. Incorrect parameter types;<br>3. Parameter verification failed.                       |
857e41f4b71Sopenharmony_ci| 15500000 | Inner error.                   |
858e41f4b71Sopenharmony_ci
859e41f4b71Sopenharmony_ci**示例:**
860e41f4b71Sopenharmony_ci
861e41f4b71Sopenharmony_ci```ts
862e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
863e41f4b71Sopenharmony_ci
864e41f4b71Sopenharmony_cilet observer = (key: string) => {
865e41f4b71Sopenharmony_ci  console.info("The key " + key + " changed.");
866e41f4b71Sopenharmony_ci}
867e41f4b71Sopenharmony_cipreferences.on('change', observer);
868e41f4b71Sopenharmony_cipreferences.putSync('startup', 'manual');
869e41f4b71Sopenharmony_cipreferences.flush().then(() => {
870e41f4b71Sopenharmony_ci  console.info("Succeeded in flushing.");
871e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => {
872e41f4b71Sopenharmony_ci  console.error(`Failed to flush. code: ${err.code}, message: ${err.message}`);
873e41f4b71Sopenharmony_ci})
874e41f4b71Sopenharmony_ci```
875e41f4b71Sopenharmony_ci
876e41f4b71Sopenharmony_ci### on('multiProcessChange')
877e41f4b71Sopenharmony_ci
878e41f4b71Sopenharmony_cion(type: 'multiProcessChange', callback: Callback&lt;string&gt;): void
879e41f4b71Sopenharmony_ci
880e41f4b71Sopenharmony_ci订阅进程间数据变更,多个进程持有同一个首选项文件时,订阅的Key的值在任意一个进程发生变更后,执行[flush](#flush)方法后,触发callback回调。
881e41f4b71Sopenharmony_ci
882e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
883e41f4b71Sopenharmony_ci
884e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
885e41f4b71Sopenharmony_ci
886e41f4b71Sopenharmony_ci**参数:**
887e41f4b71Sopenharmony_ci
888e41f4b71Sopenharmony_ci| 参数名   | 类型     | 必填 | 说明                                                         |
889e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ------------------------------------------------------------ |
890e41f4b71Sopenharmony_ci| type     | string   | 是   | 事件类型,固定值'multiProcessChange',表示多进程间的数据变更。 |
891e41f4b71Sopenharmony_ci| callback | Callback&lt;string&gt; | 是   | 回调函数。返回发生变更的Key。                   |
892e41f4b71Sopenharmony_ci
893e41f4b71Sopenharmony_ci**错误码:**
894e41f4b71Sopenharmony_ci
895e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[用户首选项错误码](errorcode-preferences.md)。
896e41f4b71Sopenharmony_ci
897e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                                |
898e41f4b71Sopenharmony_ci| -------- | -------------------------------------- |
899e41f4b71Sopenharmony_ci| 401      | Parameter error. Possible causes:<br>1. Mandatory parameters are left unspecified;<br>2. Incorrect parameter types;<br>3. Parameter verification failed.                       |
900e41f4b71Sopenharmony_ci| 15500000 | Inner error.                           |
901e41f4b71Sopenharmony_ci| 15500019 | Failed to obtain subscription service. |
902e41f4b71Sopenharmony_ci
903e41f4b71Sopenharmony_ci**示例:**
904e41f4b71Sopenharmony_ci
905e41f4b71Sopenharmony_ci```ts
906e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
907e41f4b71Sopenharmony_ci
908e41f4b71Sopenharmony_cilet observer = (key: string) => {
909e41f4b71Sopenharmony_ci  console.info("The key " + key + " changed.");
910e41f4b71Sopenharmony_ci}
911e41f4b71Sopenharmony_cipreferences.on('multiProcessChange', observer);
912e41f4b71Sopenharmony_cipreferences.putSync('startup', 'manual');
913e41f4b71Sopenharmony_cipreferences.flush().then(() => {
914e41f4b71Sopenharmony_ci  console.info("Succeeded in flushing.");
915e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => {
916e41f4b71Sopenharmony_ci  console.error(`Failed to flush. code: ${err.code}, message: ${err.message}`);
917e41f4b71Sopenharmony_ci})
918e41f4b71Sopenharmony_ci```
919e41f4b71Sopenharmony_ci
920e41f4b71Sopenharmony_ci### on('dataChange')
921e41f4b71Sopenharmony_ci
922e41f4b71Sopenharmony_cion(type: 'dataChange', keys: Array&lt;string&gt;, callback: Callback&lt;lang.ISendable&gt;): void
923e41f4b71Sopenharmony_ci
924e41f4b71Sopenharmony_ci精确订阅数据变更,只有被订阅的key值发生变更后,在执行[flush](#flush)方法后,触发callback回调。
925e41f4b71Sopenharmony_ci
926e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
927e41f4b71Sopenharmony_ci
928e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
929e41f4b71Sopenharmony_ci
930e41f4b71Sopenharmony_ci**参数:**
931e41f4b71Sopenharmony_ci
932e41f4b71Sopenharmony_ci| 参数名   | 类型                                                         | 必填 | 说明                                                         |
933e41f4b71Sopenharmony_ci| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
934e41f4b71Sopenharmony_ci| type     | string                                                       | 是   | 事件类型,固定值'dataChange',表示精确的数据变更。           |
935e41f4b71Sopenharmony_ci| keys     | Array&lt;string&gt;                                          | 是   | 需要订阅的key集合。                                          |
936e41f4b71Sopenharmony_ci| callback | callback: Callback&lt;[lang.ISendable](../../arkts-utils/sendable-overview.md#isendable)&gt; | 是   | 回调函数。回调支持返回多个键值对,其中键为发生变更的订阅key,值为变更后的数据:支持number、string、boolean、bigint以及可序列化的object。 |
937e41f4b71Sopenharmony_ci
938e41f4b71Sopenharmony_ci**错误码:**
939e41f4b71Sopenharmony_ci
940e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[用户首选项错误码](errorcode-preferences.md)。
941e41f4b71Sopenharmony_ci
942e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                        |
943e41f4b71Sopenharmony_ci| -------- | ------------------------------ |
944e41f4b71Sopenharmony_ci| 401      | Parameter error. Possible causes:<br>1. Mandatory parameters are left unspecified;<br>2. Incorrect parameter types;<br>3. Parameter verification failed.                       |
945e41f4b71Sopenharmony_ci| 15500000 | Inner error.                   |
946e41f4b71Sopenharmony_ci
947e41f4b71Sopenharmony_ci**示例:**
948e41f4b71Sopenharmony_ci
949e41f4b71Sopenharmony_ci```ts
950e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
951e41f4b71Sopenharmony_ciimport { lang } from '@kit.ArkTS';
952e41f4b71Sopenharmony_ci
953e41f4b71Sopenharmony_cilet observer = (data: lang.ISendable) => {
954e41f4b71Sopenharmony_ci  console.info(`observer : ${data}`)
955e41f4b71Sopenharmony_ci}
956e41f4b71Sopenharmony_cilet keys = ['name', 'age'];
957e41f4b71Sopenharmony_cipreferences.on('dataChange', keys, observer);
958e41f4b71Sopenharmony_cipreferences.putSync('name', 'xiaohong');
959e41f4b71Sopenharmony_cipreferences.putSync('weight', 125);
960e41f4b71Sopenharmony_cipreferences.flush().then(() => {
961e41f4b71Sopenharmony_ci  console.info("Succeeded in flushing.");
962e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => {
963e41f4b71Sopenharmony_ci  console.error(`Failed to flush. code: ${err.code}, message: ${err.message}`);
964e41f4b71Sopenharmony_ci});
965e41f4b71Sopenharmony_ci```
966e41f4b71Sopenharmony_ci
967e41f4b71Sopenharmony_ci### off('change')
968e41f4b71Sopenharmony_ci
969e41f4b71Sopenharmony_cioff(type: 'change', callback?: Callback&lt;string&gt;): void
970e41f4b71Sopenharmony_ci
971e41f4b71Sopenharmony_ci取消订阅数据变更。
972e41f4b71Sopenharmony_ci
973e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
974e41f4b71Sopenharmony_ci
975e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
976e41f4b71Sopenharmony_ci
977e41f4b71Sopenharmony_ci**参数:**
978e41f4b71Sopenharmony_ci
979e41f4b71Sopenharmony_ci| 参数名   | 类型     | 必填 | 说明                                                         |
980e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ------------------------------------------------------------ |
981e41f4b71Sopenharmony_ci| type     | string   | 是   | 事件类型,固定值'change',表示数据变更。                     |
982e41f4b71Sopenharmony_ci| callback | Callback&lt;string&gt; | 否   | 需要取消的回调函数,不填写则全部取消。 |
983e41f4b71Sopenharmony_ci
984e41f4b71Sopenharmony_ci**错误码:**
985e41f4b71Sopenharmony_ci
986e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[用户首选项错误码](errorcode-preferences.md)。
987e41f4b71Sopenharmony_ci
988e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                        |
989e41f4b71Sopenharmony_ci| -------- | ------------------------------ |
990e41f4b71Sopenharmony_ci| 401      | Parameter error. Possible causes:<br>1. Mandatory parameters are left unspecified;<br>2. Incorrect parameter types;<br>3. Parameter verification failed.                       |
991e41f4b71Sopenharmony_ci| 15500000 | Inner error.                   |
992e41f4b71Sopenharmony_ci
993e41f4b71Sopenharmony_ci**示例:**
994e41f4b71Sopenharmony_ci
995e41f4b71Sopenharmony_ci```ts
996e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
997e41f4b71Sopenharmony_ci
998e41f4b71Sopenharmony_cilet observer = (key: string) => {
999e41f4b71Sopenharmony_ci  console.info("The key " + key + " changed.");
1000e41f4b71Sopenharmony_ci}
1001e41f4b71Sopenharmony_cipreferences.on('change', observer);
1002e41f4b71Sopenharmony_cipreferences.putSync('startup', 'auto');
1003e41f4b71Sopenharmony_cipreferences.flush().then(() => {
1004e41f4b71Sopenharmony_ci  console.info("Succeeded in flushing.");
1005e41f4b71Sopenharmony_ci  preferences.off('change', observer);
1006e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => {
1007e41f4b71Sopenharmony_ci  console.error(`Failed to flush. code: ${err.code}, message: ${err.message}`);
1008e41f4b71Sopenharmony_ci});
1009e41f4b71Sopenharmony_ci```
1010e41f4b71Sopenharmony_ci
1011e41f4b71Sopenharmony_ci### off('multiProcessChange')
1012e41f4b71Sopenharmony_ci
1013e41f4b71Sopenharmony_cioff(type: 'multiProcessChange', callback?: Callback&lt;string&gt;): void
1014e41f4b71Sopenharmony_ci
1015e41f4b71Sopenharmony_ci取消订阅进程间数据变更。
1016e41f4b71Sopenharmony_ci
1017e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1018e41f4b71Sopenharmony_ci
1019e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
1020e41f4b71Sopenharmony_ci
1021e41f4b71Sopenharmony_ci**参数:**
1022e41f4b71Sopenharmony_ci
1023e41f4b71Sopenharmony_ci| 参数名   | 类型     | 必填 | 说明                                                         |
1024e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ------------------------------------------------------------ |
1025e41f4b71Sopenharmony_ci| type     | string   | 是   | 事件类型,固定值'multiProcessChange',表示多进程间的数据变更。 |
1026e41f4b71Sopenharmony_ci| callback | Callback&lt;string&gt; | 否   | 需要取消的回调函数,不填写则全部取消。 |
1027e41f4b71Sopenharmony_ci
1028e41f4b71Sopenharmony_ci**错误码:**
1029e41f4b71Sopenharmony_ci
1030e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[用户首选项错误码](errorcode-preferences.md)。
1031e41f4b71Sopenharmony_ci
1032e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                        |
1033e41f4b71Sopenharmony_ci| -------- | ------------------------------ |
1034e41f4b71Sopenharmony_ci| 401      | Parameter error. Possible causes:<br>1. Mandatory parameters are left unspecified;<br>2. Incorrect parameter types;<br>3. Parameter verification failed.                       |
1035e41f4b71Sopenharmony_ci| 15500000 | Inner error.                   |
1036e41f4b71Sopenharmony_ci
1037e41f4b71Sopenharmony_ci**示例:**
1038e41f4b71Sopenharmony_ci
1039e41f4b71Sopenharmony_ci```ts
1040e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
1041e41f4b71Sopenharmony_ci
1042e41f4b71Sopenharmony_cilet observer = (key: string) => {
1043e41f4b71Sopenharmony_ci  console.info("The key " + key + " changed.");
1044e41f4b71Sopenharmony_ci}
1045e41f4b71Sopenharmony_cipreferences.on('multiProcessChange', observer);
1046e41f4b71Sopenharmony_cipreferences.putSync('startup', 'auto');
1047e41f4b71Sopenharmony_cipreferences.flush().then(() => {
1048e41f4b71Sopenharmony_ci  console.info("Succeeded in flushing.");
1049e41f4b71Sopenharmony_ci  preferences.off('multiProcessChange', observer);
1050e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => {
1051e41f4b71Sopenharmony_ci  console.error(`Failed to flush. code: ${err.code}, message: ${err.message}`);
1052e41f4b71Sopenharmony_ci});
1053e41f4b71Sopenharmony_ci```
1054e41f4b71Sopenharmony_ci### off('dataChange')
1055e41f4b71Sopenharmony_ci
1056e41f4b71Sopenharmony_cioff(type: 'dataChange', keys: Array&lt;string&gt;, callback?: Callback&lt;lang.ISendable&gt;): void
1057e41f4b71Sopenharmony_ci
1058e41f4b71Sopenharmony_ci取消精确订阅数据变更。
1059e41f4b71Sopenharmony_ci
1060e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1061e41f4b71Sopenharmony_ci
1062e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
1063e41f4b71Sopenharmony_ci
1064e41f4b71Sopenharmony_ci**参数:**
1065e41f4b71Sopenharmony_ci
1066e41f4b71Sopenharmony_ci| 参数名   | 类型                                                         | 必填 | 说明                                                         |
1067e41f4b71Sopenharmony_ci| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
1068e41f4b71Sopenharmony_ci| type     | string                                                       | 是   | 事件类型,固定值'dataChange',表示精确的数据变更。           |
1069e41f4b71Sopenharmony_ci| keys     | Array&lt;string&gt;                                          | 是   | 需要取消订阅的key集合,当keys为空数组时,表示取消订阅全部key;当keys为非空数组时,表示只取消订阅key集合中的key。 |
1070e41f4b71Sopenharmony_ci| callback | Callback&lt;[lang.ISendable](../../arkts-utils/sendable-overview.md#isendable)&gt; | 否   | 需要取消的回调函数,若callback不填写,表示所有的callback都需要处理;若callback填写,表示只处理该callback。 |
1071e41f4b71Sopenharmony_ci
1072e41f4b71Sopenharmony_ci**错误码:**
1073e41f4b71Sopenharmony_ci
1074e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[用户首选项错误码](errorcode-preferences.md)。
1075e41f4b71Sopenharmony_ci
1076e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                        |
1077e41f4b71Sopenharmony_ci| -------- | ------------------------------ |
1078e41f4b71Sopenharmony_ci| 401      | Parameter error. Possible causes:<br>1. Mandatory parameters are left unspecified;<br>2. Incorrect parameter types;<br>3. Parameter verification failed.                       |
1079e41f4b71Sopenharmony_ci| 15500000 | Inner error.                   |
1080e41f4b71Sopenharmony_ci
1081e41f4b71Sopenharmony_ci**示例:**
1082e41f4b71Sopenharmony_ci
1083e41f4b71Sopenharmony_ci```ts
1084e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
1085e41f4b71Sopenharmony_ciimport { lang } from '@kit.ArkTS';
1086e41f4b71Sopenharmony_ci
1087e41f4b71Sopenharmony_cilet observer = (data: lang.ISendable) => {
1088e41f4b71Sopenharmony_ci  console.info(`observer : ${data}`)
1089e41f4b71Sopenharmony_ci}
1090e41f4b71Sopenharmony_cilet keys = ['name', 'age'];
1091e41f4b71Sopenharmony_cipreferences.on('dataChange', keys, observer);
1092e41f4b71Sopenharmony_cipreferences.putSync('name', 'xiaohong');
1093e41f4b71Sopenharmony_cipreferences.putSync('weight', 125);
1094e41f4b71Sopenharmony_cipreferences.flush().then(() => {
1095e41f4b71Sopenharmony_ci  console.info("Succeeded in flushing.");
1096e41f4b71Sopenharmony_ci  preferences.off('dataChange', keys, observer);
1097e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => {
1098e41f4b71Sopenharmony_ci  console.error(`Failed to flush. code: ${err.code}, message: ${err.message}`);
1099e41f4b71Sopenharmony_ci});
1100e41f4b71Sopenharmony_ci```
1101