# @ohos.data.sendablePreferences (共享用户首选项) 共享用户首选项为应用æä¾›Key-Value键值型的数æ®å¤„ç†èƒ½åŠ›ï¼Œæ”¯æŒåº”用æŒä¹…化轻é‡çº§æ•°æ®ï¼Œå¹¶å¯¹å…¶ä¿®æ”¹å’ŒæŸ¥è¯¢ã€‚ æ•°æ®å˜å‚¨å½¢å¼ä¸ºé”®å€¼å¯¹ï¼Œé”®çš„类型为å—符串型,值的å˜å‚¨æ•°æ®ç±»åž‹åŒ…括numberã€stringã€booleanã€bigint以åŠå¯åºåˆ—化的object。 å…±äº«ç”¨æˆ·é¦–é€‰é¡¹é»˜è®¤åŠ å¯†ç‰çº§ä¸ºEL2,æŒä¹…化文件å˜å‚¨åœ¨å¯¹åº”çš„EL2路径下。设备开机åŽï¼Œè‹¥æ— é”å±å¯†ç ,å¯ç›´æŽ¥è®¿é—®ï¼›è‹¥æœ‰é”å±å¯†ç ,æ¤è·¯å¾„下的文件需è¦è‡³å°‘一次解é”对应用户的é”å±ç•Œé¢åŽï¼ˆå¯†ç ã€æŒ‡çº¹ã€äººè„¸ç‰æ–¹å¼è§£é”皆å¯ï¼‰æ‰èƒ½å¤Ÿè®¿é—®ã€‚需é¿å…在开机未解é”çš„æƒ…å†µä¸‹è®¿é—®é¦–é€‰é¡¹ã€‚ä¿®æ”¹åŠ å¯†ç‰çº§çš„æ–¹æ³•请å‚è§[获å–å’Œä¿®æ”¹åŠ å¯†åˆ†åŒº](../../../application-dev/application-models/application-context-stage.md#获å–å’Œä¿®æ”¹åŠ å¯†åˆ†åŒº)。 共享用户首选项å¯ä»¥åœ¨ArkTSå¹¶å‘实例间(包括主线程ã€TaskPool&Workerå·¥ä½œçº¿ç¨‹ï¼‰ä¼ é€’ï¼Œä¼ é€’çš„è¡Œä¸ºæ˜¯å¼•ç”¨ä¼ é€’ï¼Œæ€§èƒ½ä¼˜äºŽæ™®é€šçš„[用户首选项](js-apis-data-preferences.md),å¯å‚考[Sendable使用场景](../../arkts-utils/sendable-guide.md)。 > **说明:** > > 本模å—首批接å£ä»ŽAPI version 12开始支æŒã€‚åŽç»ç‰ˆæœ¬çš„æ–°å¢žæŽ¥å£ï¼Œé‡‡ç”¨ä¸Šè§’æ ‡å•ç‹¬æ ‡è®°æŽ¥å£çš„起始版本。 > > å…±äº«ç”¨æˆ·é¦–é€‰é¡¹æ— æ³•ä¿è¯è¿›ç¨‹å¹¶å‘安全,会有文件æŸå和数æ®ä¸¢å¤±çš„é£Žé™©ï¼Œä¸æ”¯æŒåœ¨å¤šè¿›ç¨‹åœºæ™¯ä¸‹ä½¿ç”¨ã€‚ ## å¯¼å…¥æ¨¡å— ```ts import { sendablePreferences } from '@kit.ArkData'; ``` ## å¸¸é‡ **原å化æœåŠ¡API:** 从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.DistributedDataManager.Preferences.Core | åç§° | 傿•°ç±»åž‹ | å¯è¯» | å¯å†™ | 说明 | | ---------------- | -------- | ---- | ---- | --------------------------------------- | | MAX_KEY_LENGTH | number | 是 | å¦ | Key的最大长度é™åˆ¶ä¸º1024个å—节。 | | MAX_VALUE_LENGTH | number | 是 | å¦ | Value的最大长度é™åˆ¶ä¸º16MB。 | ## sendablePreferences.getPreferences getPreferences(context: Context, options: Options): Promise<Preferences> 获å–Preferences实例,使用Promise异æ¥å›žè°ƒã€‚ **原å化æœåŠ¡API:** 从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.DistributedDataManager.Preferences.Core **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | ------- | ---------------- | ---- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | context | [Context](../apis-ability-kit/js-apis-inner-application-baseContext.md) | 是 | 应用上下文。 | | options | [Options](#options) | 是 | 与Preferences实例相关的é…置选项。 | **返回值:** | 类型 | 说明 | | --------------------------------------- | ---------------------------------- | | Promise<[Preferences](#preferences)> | Promise对象,返回Preferences实例。<br>该实例继承[ISendable](../../arkts-utils/arkts-sendable.md#isendable),å¯ä»¥åœ¨ArkTSå¹¶å‘实例间(包括主线程ã€TaskPool&Workerå·¥ä½œçº¿ç¨‹ï¼‰ä¼ é€’ï¼Œä¼ é€’çš„è¡Œä¸ºæ˜¯å¼•ç”¨ä¼ é€’ï¼Œå‚考[Sendable使用场景](../../arkts-utils/sendable-guide.md)。 | **错误ç :** 以下错误ç 的详细介ç»è¯·å‚è§[通用错误ç ](../errorcode-universal.md)å’Œ[用户首选项错误ç ](errorcode-preferences.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ------------------------------ | | 401 | Parameter error. Possible causes:<br>1. Mandatory parameters are left unspecified;<br>2. Incorrect parameter types;<br>3. Parameter verification failed. | | 801 | Capability not supported. | | 15500000 | Inner error. | | 15501001 | The operations is supported in stage mode only. | | 15501002 | Invalid dataGroupId. | **示例:** ```ts import { UIAbility } from '@kit.AbilityKit'; import { BusinessError } from '@kit.BasicServicesKit'; import { window } from '@kit.ArkUI'; let preferences: sendablePreferences.Preferences; class EntryAbility extends UIAbility { onWindowStageCreate(windowStage: window.WindowStage) { let options: sendablePreferences.Options = { name: 'myStore' }; let promise = sendablePreferences.getPreferences(this.context, options); promise.then((object: sendablePreferences.Preferences) => { preferences = object; console.info("Succeeded in getting preferences."); }).catch((err: BusinessError) => { console.error(`Failed to get preferences. code: ${err.code}, message: ${err.message}`); }) } } ``` ## sendablePreferences.getPreferencesSync getPreferencesSync(context: Context, options: Options): Preferences 获å–Preferences实例,æ¤ä¸ºåŒæ¥æŽ¥å£ã€‚ **原å化æœåŠ¡API:** 从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.DistributedDataManager.Preferences.Core **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | ------- | --------------------- | ---- | ------------------------------------------------------------ | | context | [Context](../apis-ability-kit/js-apis-inner-application-baseContext.md) | 是 | 应用上下文。 | | options | [Options](#options) | 是 | 与Preferences实例相关的é…置选项。 | **返回值:** | 类型 | 说明 | | --------------------------- | --------------------- | | [Preferences](#preferences) | 返回Preferences实例。<br>该实例继承[ISendable](../../arkts-utils/arkts-sendable.md#isendable),å¯ä»¥åœ¨ArkTSå¹¶å‘实例间(包括主线程ã€TaskPool&Workerå·¥ä½œçº¿ç¨‹ï¼‰ä¼ é€’ï¼Œä¼ é€’çš„è¡Œä¸ºæ˜¯å¼•ç”¨ä¼ é€’ï¼Œå‚考[Sendable使用场景](../../arkts-utils/sendable-guide.md)。 | **错误ç :** 以下错误ç 的详细介ç»è¯·å‚è§[通用错误ç ](../errorcode-universal.md)å’Œ[用户首选项错误ç ](errorcode-preferences.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ------------------------------ | | 401 | Parameter error. Possible causes:<br>1. Mandatory parameters are left unspecified;<br>2. Incorrect parameter types;<br>3. Parameter verification failed. | | 801 | Capability not supported. | | 15500000 | Inner error. | | 15501001 | The operations is supported in stage mode only. | | 15501002 | Invalid dataGroupId. | **示例:** ```ts import { UIAbility } from '@kit.AbilityKit'; import { window } from '@kit.ArkUI'; let preferences: sendablePreferences.Preferences; class EntryAbility extends UIAbility { onWindowStageCreate(windowStage: window.WindowStage) { let options: sendablePreferences.Options = { name: 'myStore' }; preferences = sendablePreferences.getPreferencesSync(this.context, options); } } ``` ## sendablePreferences.deletePreferences deletePreferences(context: Context, options: Options): Promise<void> 从缓å˜ä¸ç§»å‡ºæŒ‡å®šçš„Preferences实例,若Preferences实例有对应的æŒä¹…åŒ–æ–‡ä»¶ï¼Œåˆ™åŒæ—¶åˆ 除其æŒä¹…化文件。使用Promise异æ¥å›žè°ƒã€‚ 调用该接å£åŽï¼Œä¸å»ºè®®å†ä½¿ç”¨æ—§çš„Preferenceså®žä¾‹è¿›è¡Œæ•°æ®æ“作,å¦åˆ™ä¼šå‡ºçŽ°æ•°æ®ä¸€è‡´æ€§é—®é¢˜ã€‚ **原å化æœåŠ¡API:** 从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.DistributedDataManager.Preferences.Core **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | ------- | ---------------- | ---- | ----------------------------------------------------------------------------| | context | [Context](../apis-ability-kit/js-apis-inner-application-baseContext.md) | 是 | 应用上下文。 | | options | [Options](#options) | 是 | 与Preferences实例相关的é…置选项。 | **返回值:** | 类型 | 说明 | | ------------------- | ------------------------- | | Promise<void> | æ— è¿”å›žç»“æžœçš„Promise对象。 | **错误ç :** 以下错误ç 的详细介ç»è¯·å‚è§[通用错误ç ](../errorcode-universal.md)å’Œ[用户首选项错误ç ](errorcode-preferences.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ------------------------------ | | 401 | Parameter error. Possible causes:<br>1. Mandatory parameters are left unspecified;<br>2. Incorrect parameter types;<br>3. Parameter verification failed. | | 801 | Capability not supported. | | 15500000 | Inner error. | | 15500010 | Failed to delete the user preferences persistence file. | | 15501001 | The operations is supported in stage mode only. | | 15501002 | Invalid dataGroupId. | **示例:** ```ts import { UIAbility } from '@kit.AbilityKit'; import { BusinessError } from '@kit.BasicServicesKit'; import { window } from '@kit.ArkUI'; class EntryAbility extends UIAbility { onWindowStageCreate(windowStage: window.WindowStage) { let options: sendablePreferences.Options = { name: 'myStore' }; let promise = sendablePreferences.deletePreferences(this.context, options); promise.then(() => { console.info("Succeeded in deleting preferences."); }).catch((err: BusinessError) => { console.error(`Failed to delete preferences. code: ${err.code}, message: ${err.message}`); }) } } ``` ## sendablePreferences.removePreferencesFromCache removePreferencesFromCache(context: Context, options: Options): Promise<void> 从缓å˜ä¸ç§»å‡ºæŒ‡å®šçš„Preferences实例,使用Promise异æ¥å›žè°ƒã€‚ 应用首次调用[getPreferences](#sendablepreferencesgetpreferences)接å£èŽ·å–æŸä¸ªPreferences实例åŽï¼Œè¯¥å®žä¾‹ä¼šè¢«ä¼šè¢«ç¼“å˜èµ·æ¥ï¼ŒåŽç»å†æ¬¡[getPreferences](#sendablepreferencesgetpreferences)æ—¶ä¸ä¼šå†æ¬¡ä»ŽæŒä¹…化文件ä¸è¯»å–,直接从缓å˜ä¸èŽ·å–Preferenceså®žä¾‹ã€‚è°ƒç”¨æ¤æŽ¥å£ç§»å‡ºç¼“å˜ä¸çš„实例之åŽï¼Œå†æ¬¡getPreferenceså°†ä¼šé‡æ–°è¯»å–æŒä¹…åŒ–æ–‡ä»¶ï¼Œç”Ÿæˆæ–°çš„Preferences实例。 **原å化æœåŠ¡API:** 从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.DistributedDataManager.Preferences.Core **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | ------- | ---------------- | ---- | ----------------------------------------------------------------------------------------------------------------------- | | context | [Context](../apis-ability-kit/js-apis-inner-application-baseContext.md) | 是 | 应用上下文。 | | options | [Options](#options) | 是 | 与Preferences实例相关的é…置选项。 | **返回值:** | 类型 | 说明 | | ------------------- | ------------------------- | | Promise<void> | æ— è¿”å›žç»“æžœçš„Promise对象。 | **错误ç :** 以下错误ç 的详细介ç»è¯·å‚è§[通用错误ç ](../errorcode-universal.md)å’Œ[用户首选项错误ç ](errorcode-preferences.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ------------------------------ | | 401 | Parameter error. Possible causes:<br>1. Mandatory parameters are left unspecified;<br>2. Incorrect parameter types;<br>3. Parameter verification failed. | | 801 | Capability not supported. | | 15500000 | Inner error. | | 15501001 | The operations is supported in stage mode only. | | 15501002 | Invalid dataGroupId. | **示例:** ```ts import { UIAbility } from '@kit.AbilityKit'; import { BusinessError } from '@kit.BasicServicesKit'; import { window } from '@kit.ArkUI'; class EntryAbility extends UIAbility { onWindowStageCreate(windowStage: window.WindowStage) { let options: sendablePreferences.Options = { name: 'myStore' }; let promise = sendablePreferences.removePreferencesFromCache(this.context, options); promise.then(() => { console.info("Succeeded in removing preferences."); }).catch((err: BusinessError) => { console.error(`Failed to remove preferences. code: ${err.code}, message: ${err.message}`); }) } } ``` ## sendablePreferences.removePreferencesFromCacheSync removePreferencesFromCacheSync(context: Context, options: Options):void 从缓å˜ä¸ç§»å‡ºæŒ‡å®šçš„Preferences实例,æ¤ä¸ºåŒæ¥æŽ¥å£ã€‚ 应用首次调用[getPreferences](#sendablepreferencesgetpreferences)接å£èŽ·å–æŸä¸ªPreferences实例åŽï¼Œè¯¥å®žä¾‹ä¼šè¢«ä¼šè¢«ç¼“å˜èµ·æ¥ï¼ŒåŽç»å†æ¬¡[getPreferences](#sendablepreferencesgetpreferences)æ—¶ä¸ä¼šå†æ¬¡ä»ŽæŒä¹…化文件ä¸è¯»å–,直接从缓å˜ä¸èŽ·å–Preferenceså®žä¾‹ã€‚è°ƒç”¨æ¤æŽ¥å£ç§»å‡ºç¼“å˜ä¸çš„实例之åŽï¼Œå†æ¬¡getPreferenceså°†ä¼šé‡æ–°è¯»å–æŒä¹…åŒ–æ–‡ä»¶ï¼Œç”Ÿæˆæ–°çš„Preferences实例。 **原å化æœåŠ¡API:** 从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.DistributedDataManager.Preferences.Core **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | ------- | --------------------- | ---- | ------------------------------------------------------------ | | context | [Context](../apis-ability-kit/js-apis-inner-application-baseContext.md) | 是 | 应用上下文。 | | options | [Options](#options) | 是 | 与Preferences实例相关的é…置选项。 | **错误ç :** 以下错误ç 的详细介ç»è¯·å‚è§[通用错误ç ](../errorcode-universal.md)å’Œ[用户首选项错误ç ](errorcode-preferences.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ------------------------------ | | 401 | Parameter error. Possible causes:<br>1. Mandatory parameters are left unspecified;<br>2. Incorrect parameter types;<br>3. Parameter verification failed. | | 801 | Capability not supported. | | 15500000 | Inner error. | | 15501001 | The operations is supported in stage mode only. | | 15501002 | Invalid dataGroupId. | **示例:** ```ts import { UIAbility } from '@kit.AbilityKit'; import { window } from '@kit.ArkUI'; class EntryAbility extends UIAbility { onWindowStageCreate(windowStage: window.WindowStage) { let options: sendablePreferences.Options = { name: 'myStore' }; sendablePreferences.removePreferencesFromCacheSync(this.context, options); } } ``` ## Options Preferences实例é…置选项。 **原å化æœåŠ¡API:** 从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.DistributedDataManager.Preferences.Core | åç§° | 类型 | å¿…å¡« | 说明 | | ----------- | ------ | ---- | ------------------------------------------------------------ | | name | string | 是 | Preferences实例的å称。 | | dataGroupId | string\|null | å¦ | 应用组ID,<!--RP1-->æš‚ä¸æ”¯æŒæŒ‡å®šdataGroupId在对应共享沙箱路径下创建Preferences实例。<!--RP1End--><br/>为å¯é€‰å‚数。指定在æ¤dataGroupId对应的沙箱路径下创建Preferences实例。当æ¤å‚æ•°ä¸å¡«æ—¶ï¼Œé»˜è®¤åœ¨æœ¬åº”用沙箱目录下创建Preferences实例。<br/> **模型约æŸï¼š** æ¤å±žæ€§ä»…在Stage模型下å¯ç”¨ã€‚| ## Preferences Preferences继承自[ISendable](../../arkts-utils/arkts-sendable.md#isendable),å¯ä»¥åœ¨ArkTSå¹¶å‘实例间(包括主线程ã€TaskPool&Workerå·¥ä½œçº¿ç¨‹ï¼‰ä¼ é€’ï¼Œä¼ é€’çš„è¡Œä¸ºæ˜¯å¼•ç”¨ä¼ é€’ï¼Œæä¾›èŽ·å–和修改å˜å‚¨æ•°æ®çš„æŽ¥å£ã€‚ 下列接å£éƒ½éœ€å…ˆä½¿ç”¨[sendablePreferences.getPreferences](#sendablepreferencesgetpreferences)获å–到Preferences实例,å†é€šè¿‡æ¤å®žä¾‹è°ƒç”¨å¯¹åº”接å£ã€‚ ### get get(key: string, defValue: lang.ISendable): Promise<lang.ISendable> 从缓å˜çš„Preferences实例ä¸èŽ·å–键对应的值,如果值为null或者éžé»˜è®¤å€¼ç±»åž‹ï¼Œè¿”回默认数æ®defValue,使用Promise异æ¥å›žè°ƒã€‚ **原å化æœåŠ¡API:** 从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.DistributedDataManager.Preferences.Core **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | -------- | ----------------------- | ---- |--------| | key | string | 是 | è¦èŽ·å–çš„å˜å‚¨Keyå称,ä¸èƒ½ä¸ºç©ºã€‚ | | defValue | [lang.ISendable](../../arkts-utils/arkts-sendable.md#isendable) | 是 | 默认返回值。 | **返回值:** | 类型 | 说明 | | ----------------------------------- | ----------------------------- | | Promise<[lang.ISendable](../../arkts-utils/arkts-sendable.md#isendable)> | Promise对象,返回键对应的值。 <br>该实例继承[ISendable](../../arkts-utils/arkts-sendable.md#isendable),å¯ä»¥åœ¨ArkTSå¹¶å‘实例间(包括主线程ã€TaskPool&Workerå·¥ä½œçº¿ç¨‹ï¼‰ä¼ é€’ï¼Œä¼ é€’çš„è¡Œä¸ºæ˜¯å¼•ç”¨ä¼ é€’ï¼Œå‚考[Sendable使用场景](../../arkts-utils/sendable-guide.md)。| **错误ç :** 以下错误ç 的详细介ç»è¯·å‚è§[通用错误ç ](../errorcode-universal.md)å’Œ[用户首选项错误ç ](errorcode-preferences.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ------------------------------ | | 401 | Parameter error. Possible causes:<br>1. Mandatory parameters are left unspecified;<br>2. Incorrect parameter types;<br>3. Parameter verification failed. | | 15500000 | Inner error. | **示例:** ```ts import { BusinessError } from '@kit.BasicServicesKit'; import { lang } from '@kit.ArkTS'; let promise = preferences.get('startup', 'default'); promise.then((data: lang.ISendable) => { let dataStr = data as string; console.info(`Succeeded in getting value of 'startup'. Data: ${dataStr}`); }).catch((err: BusinessError) => { console.error(`Failed to get value of 'startup'. code: ${err.code}, message: ${err.message}`); }) ``` ### getSync getSync(key: string, defValue: lang.ISendable): lang.ISendable 从缓å˜çš„Preferences实例ä¸èŽ·å–键对应的值,如果值为null或者éžé»˜è®¤å€¼ç±»åž‹ï¼Œè¿”回默认数æ®defValue,æ¤ä¸ºåŒæ¥æŽ¥å£ã€‚ **原å化æœåŠ¡API:** 从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.DistributedDataManager.Preferences.Core **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | -------- | ----------------------- | ---- |---------------------| | key | string | 是 | è¦èŽ·å–çš„å˜å‚¨Keyå称,ä¸èƒ½ä¸ºç©ºã€‚ | | defValue | [lang.ISendable](../../arkts-utils/arkts-sendable.md#isendable) | 是 | 默认返回值。 | **返回值:** | 类型 | 说明 | | ----------------------------------- | ----------------------------- | | [lang.ISendable](../../arkts-utils/arkts-sendable.md#isendable) | 返回键对应的值。 <br>该实例继承[ISendable](../../arkts-utils/arkts-sendable.md#isendable),å¯ä»¥åœ¨ArkTSå¹¶å‘实例间(包括主线程ã€TaskPool&Workerå·¥ä½œçº¿ç¨‹ï¼‰ä¼ é€’ï¼Œä¼ é€’çš„è¡Œä¸ºæ˜¯å¼•ç”¨ä¼ é€’ï¼Œå‚考[Sendable使用场景](../../arkts-utils/sendable-guide.md)。| **错误ç :** 以下错误ç 的详细介ç»è¯·å‚è§[通用错误ç ](../errorcode-universal.md)å’Œ[用户首选项错误ç ](errorcode-preferences.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ------------------------------ | | 401 | Parameter error. Possible causes:<br>1. Mandatory parameters are left unspecified;<br>2. Incorrect parameter types;<br>3. Parameter verification failed. | | 15500000 | Inner error. | **示例:** ```ts import { lang } from '@kit.ArkTS'; let value: lang.ISendable = preferences.getSync('startup', 'default'); ``` ### getAll getAll(): Promise<lang.ISendable> 从缓å˜çš„Preferences实例ä¸èŽ·å–æ‰€æœ‰é”®å€¼æ•°æ®ã€‚ **原å化æœåŠ¡API:** 从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.DistributedDataManager.Preferences.Core **返回值:** | 类型 | 说明 | | --------------------- | ------------------------------------------- | | Promise<[lang.ISendable](../../arkts-utils/arkts-sendable.md#isendable)> | Promiseå¯¹è±¡ï¼Œè¿”å›žå«æœ‰æ‰€æœ‰é”®å€¼æ•°æ®ã€‚ <br>该对象继承[ISendable](../../arkts-utils/arkts-sendable.md#isendable),å¯ä»¥åœ¨ArkTSå¹¶å‘实例间(包括主线程ã€TaskPool&Workerå·¥ä½œçº¿ç¨‹ï¼‰ä¼ é€’ï¼Œä¼ é€’çš„è¡Œä¸ºæ˜¯å¼•ç”¨ä¼ é€’ï¼Œå‚考[Sendable使用场景](../../arkts-utils/sendable-guide.md)。 | **错误ç :** 以下错误ç 的详细介ç»è¯·å‚è§[用户首选项错误ç ](errorcode-preferences.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ------------------------------ | | 15500000 | Inner error. | **示例:** ```ts import { BusinessError } from '@kit.BasicServicesKit'; import { lang } from '@kit.ArkTS'; let promise = preferences.getAll(); promise.then((keyValues: lang.ISendable) => { for (let value of Object.keys(keyValues)) { console.info("getAll " + JSON.stringify(value)); } }).catch((err: BusinessError) => { console.error(`Failed to get all key-values. code: ${err.code}, message: ${err.message}`); }) ``` ### getAllSync getAllSync(): lang.ISendable 从缓å˜çš„Preferences实例ä¸èŽ·å–æ‰€æœ‰é”®å€¼æ•°æ®ï¼Œæ¤ä¸ºåŒæ¥æŽ¥å£ã€‚ **原å化æœåŠ¡API:** 从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.DistributedDataManager.Preferences.Core **返回值:** | 类型 | 说明 | | --------------------- | ------------------------------------------- | | [lang.ISendable](../../arkts-utils/arkts-sendable.md#isendable) | è¿”å›žå«æœ‰æ‰€æœ‰é”®å€¼æ•°æ®ã€‚<br>该对象继承[ISendable](../../arkts-utils/arkts-sendable.md#isendable),å¯ä»¥åœ¨ArkTSå¹¶å‘实例间(包括主线程ã€TaskPool&Workerå·¥ä½œçº¿ç¨‹ï¼‰ä¼ é€’ï¼Œä¼ é€’çš„è¡Œä¸ºæ˜¯å¼•ç”¨ä¼ é€’ï¼Œå‚考[Sendable使用场景](../../arkts-utils/sendable-guide.md)。 | **错误ç :** 以下错误ç 的详细介ç»è¯·å‚è§[用户首选项错误ç ](errorcode-preferences.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ------------------------------ | | 15500000 | Inner error. | **示例:** ```ts import { lang } from '@kit.ArkTS'; let keyValues: lang.ISendable = preferences.getAllSync(); for (let value of Object.keys(keyValues)) { console.info("getAll " + JSON.stringify(value)); } ``` ### put put(key: string, value: lang.ISendable): Promise<void> 将数æ®å†™å…¥ç¼“å˜çš„Preferences实例ä¸ï¼Œå¯é€šè¿‡[flush](#flush)å°†Preferences实例æŒä¹…化,使用Promise异æ¥å›žè°ƒã€‚ > **说明:** > > 当valueä¸åŒ…å«éžUTF-8æ ¼å¼çš„å—符串时,请使用Uint8Array类型å˜å‚¨ï¼Œå¦åˆ™ä¼šé€ æˆæŒä¹…åŒ–æ–‡ä»¶å‡ºçŽ°æ ¼å¼é”™è¯¯é€ æˆæ–‡ä»¶æŸå。 > > 当对应的键已ç»å˜åœ¨æ—¶ï¼Œput()方法会覆盖其值。å¯ä»¥ä½¿ç”¨hasSync()方法检查是å¦å˜åœ¨å¯¹åº”键值对。 **原å化æœåŠ¡API:** 从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.DistributedDataManager.Preferences.Core **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | ------ | ----------------------- | ---- |--------------------------| | key | string | 是 | è¦ä¿®æ”¹çš„å˜å‚¨çš„Key,ä¸èƒ½ä¸ºç©ºã€‚ | | value | [lang.ISendable](../../arkts-utils/arkts-sendable.md#isendable) | 是 | å˜å‚¨çš„æ–°å€¼ã€‚ | **返回值:** | 类型 | 说明 | | ------------------- | ------------------------- | | Promise<void> | æ— è¿”å›žç»“æžœçš„Promise对象。 | **错误ç :** 以下错误ç 的详细介ç»è¯·å‚è§[通用错误ç ](../errorcode-universal.md)å’Œ[用户首选项错误ç ](errorcode-preferences.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ------------------------------ | | 401 | Parameter error. Possible causes:<br>1. Mandatory parameters are left unspecified;<br>2. Incorrect parameter types;<br>3. Parameter verification failed. | | 15500000 | Inner error. | **示例:** ```ts import { BusinessError } from '@kit.BasicServicesKit'; let promise = preferences.put('startup', 'auto'); promise.then(() => { console.info("Succeeded in putting value of 'startup'."); }).catch((err: BusinessError) => { console.error(`Failed to put value of 'startup'. code: ${err.code}, message: ${err.message}`); }) ``` ### putSync putSync(key: string, value: lang.ISendable): void 将数æ®å†™å…¥ç¼“å˜çš„Preferences实例ä¸ï¼Œå¯é€šè¿‡[flush](#flush)å°†Preferences实例æŒä¹…化,æ¤ä¸ºåŒæ¥æŽ¥å£ã€‚ > **说明:** > > 当valueä¸åŒ…å«éžUTF-8æ ¼å¼çš„å—符串时,请使用Uint8Array类型å˜å‚¨ï¼Œå¦åˆ™ä¼šé€ æˆæŒä¹…åŒ–æ–‡ä»¶å‡ºçŽ°æ ¼å¼é”™è¯¯é€ æˆæ–‡ä»¶æŸå。 > > 当对应的键已ç»å˜åœ¨æ—¶ï¼ŒputSync()方法会覆盖其值。å¯ä»¥ä½¿ç”¨hasSync()方法检查是å¦å˜åœ¨å¯¹åº”键值对。 **原å化æœåŠ¡API:** 从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.DistributedDataManager.Preferences.Core **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | ------ | ----------------------- | ---- | ------------------------ | | key | string | 是 | è¦ä¿®æ”¹çš„å˜å‚¨çš„Key,ä¸èƒ½ä¸ºç©ºã€‚ | | value | [lang.ISendable](../../arkts-utils/arkts-sendable.md#isendable) | 是 | å˜å‚¨çš„æ–°å€¼ã€‚ | **错误ç :** 以下错误ç 的详细介ç»è¯·å‚è§[通用错误ç ](../errorcode-universal.md)å’Œ[用户首选项错误ç ](errorcode-preferences.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ------------------------------ | | 401 | Parameter error. Possible causes:<br>1. Mandatory parameters are left unspecified;<br>2. Incorrect parameter types;<br>3. Parameter verification failed. | | 15500000 | Inner error. | **示例:** ```ts preferences.putSync('startup', 'auto'); ``` ### has has(key: string): Promise<boolean> 检查缓å˜çš„Preferenceså®žä¾‹ä¸æ˜¯å¦åŒ…å«å为给定Keyçš„å˜å‚¨é”®å€¼å¯¹ï¼Œä½¿ç”¨Promise异æ¥å›žè°ƒã€‚ **原å化æœåŠ¡API:** 从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.DistributedDataManager.Preferences.Core **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | ------ | ------ | ---- | ------------------------------- | | key | string | 是 | è¦æ£€æŸ¥çš„å˜å‚¨keyå称,ä¸èƒ½ä¸ºç©ºã€‚ | **返回值:** | 类型 | 说明 | | ---------------------- | ------------------------------------------------------------ | | Promise<boolean> | Promise对象。返回Preferences实例是å¦åŒ…å«ç»™å®škeyçš„å˜å‚¨é”®å€¼å¯¹ï¼Œtrue表示å˜åœ¨ï¼Œfalse表示ä¸å˜åœ¨ã€‚ | **错误ç :** 以下错误ç 的详细介ç»è¯·å‚è§[通用错误ç ](../errorcode-universal.md)å’Œ[用户首选项错误ç ](errorcode-preferences.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ------------------------------ | | 401 | Parameter error. Possible causes:<br>1. Mandatory parameters are left unspecified;<br>2. Incorrect parameter types;<br>3. Parameter verification failed. | | 15500000 | Inner error. | **示例:** ```ts import { BusinessError } from '@kit.BasicServicesKit'; let promise = preferences.has('startup'); promise.then((val: boolean) => { if (val) { console.info("The key 'startup' is contained."); } else { console.error("The key 'startup' dose not contain."); } }).catch((err: BusinessError) => { console.error(`Failed to check the key 'startup'. code: ${err.code}, message: ${err.message}`); }) ``` ### hasSync hasSync(key: string): boolean 检查缓å˜çš„Preferenceså®žä¾‹ä¸æ˜¯å¦åŒ…å«å为给定Keyçš„å˜å‚¨é”®å€¼å¯¹ï¼Œæ¤ä¸ºåŒæ¥æŽ¥å£ã€‚ **原å化æœåŠ¡API:** 从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.DistributedDataManager.Preferences.Core **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | ------ | ------ | ---- | ------------------------------- | | key | string | 是 | è¦æ£€æŸ¥çš„å˜å‚¨keyå称,ä¸èƒ½ä¸ºç©ºã€‚ | **返回值:** | 类型 | 说明 | | ---------------------- | ------------------------------------------------------------ | | boolean | 返回Preferences实例是å¦åŒ…å«ç»™å®škeyçš„å˜å‚¨é”®å€¼å¯¹ï¼Œtrue表示å˜åœ¨ï¼Œfalse表示ä¸å˜åœ¨ã€‚ | **错误ç :** 以下错误ç 的详细介ç»è¯·å‚è§[通用错误ç ](../errorcode-universal.md)å’Œ[用户首选项错误ç ](errorcode-preferences.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ------------------------------ | | 401 | Parameter error. Possible causes:<br>1. Mandatory parameters are left unspecified;<br>2. Incorrect parameter types;<br>3. Parameter verification failed. | | 15500000 | Inner error. | **示例:** ```ts let isExist: boolean = preferences.hasSync('startup'); if (isExist) { console.info("The key 'startup' is contained."); } else { console.error("The key 'startup' dose not contain."); } ``` ### delete delete(key: string): Promise<void> 从缓å˜çš„Preferences实例ä¸åˆ 除å为给定Keyçš„å˜å‚¨é”®å€¼å¯¹ï¼Œå¯é€šè¿‡[flush](#flush)å°†Preferences实例æŒä¹…化,使用Promise异æ¥å›žè°ƒã€‚ **原å化æœåŠ¡API:** 从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.DistributedDataManager.Preferences.Core **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | ------ | ------ | ---- | ------------------------------- | | key | string | 是 | è¦åˆ 除的å˜å‚¨keyå称,ä¸èƒ½ä¸ºç©ºã€‚ | **返回值:** | 类型 | 说明 | | ------------------- | ------------------------- | | Promise<void> | æ— è¿”å›žç»“æžœçš„Promise对象。 | **错误ç :** 以下错误ç 的详细介ç»è¯·å‚è§[通用错误ç ](../errorcode-universal.md)å’Œ[用户首选项错误ç ](errorcode-preferences.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ------------------------------ | | 401 | Parameter error. Possible causes:<br>1. Mandatory parameters are left unspecified;<br>2. Incorrect parameter types;<br>3. Parameter verification failed. | | 15500000 | Inner error. | **示例:** ```ts import { BusinessError } from '@kit.BasicServicesKit'; let promise = preferences.delete('startup'); promise.then(() => { console.info("Succeeded in deleting the key 'startup'."); }).catch((err: BusinessError) => { console.error(`Failed to delete the key 'startup'. code: ${err.code}, message: ${err.message}`); }) ``` ### deleteSync deleteSync(key: string): void 从缓å˜çš„Preferences实例ä¸åˆ 除å为给定Keyçš„å˜å‚¨é”®å€¼å¯¹ï¼Œå¯é€šè¿‡[flush](#flush)å°†Preferences实例æŒä¹…化,æ¤ä¸ºåŒæ¥æŽ¥å£ã€‚ **原å化æœåŠ¡API:** 从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.DistributedDataManager.Preferences.Core **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | ------ | ------ | ---- | ------------------------------- | | key | string | 是 | è¦åˆ 除的å˜å‚¨keyå称,ä¸èƒ½ä¸ºç©ºã€‚ | **错误ç :** 以下错误ç 的详细介ç»è¯·å‚è§[通用错误ç ](../errorcode-universal.md)å’Œ[用户首选项错误ç ](errorcode-preferences.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ------------------------------ | | 401 | Parameter error. Possible causes:<br>1. Mandatory parameters are left unspecified;<br>2. Incorrect parameter types;<br>3. Parameter verification failed. | | 15500000 | Inner error. | **示例:** ```ts preferences.deleteSync('startup'); ``` ### flush flush(): Promise<void> 将缓å˜çš„Preferences实例ä¸çš„æ•°æ®å¼‚æ¥å˜å‚¨åˆ°å…±äº«ç”¨æˆ·é¦–选项的æŒä¹…化文件ä¸ï¼Œä½¿ç”¨Promise异æ¥å›žè°ƒã€‚ > **说明:** > > å½“æ•°æ®æœªä¿®æ”¹æˆ–修改åŽçš„æ•°æ®ä¸Žç¼“å˜æ•°æ®ä¸€è‡´æ—¶ï¼Œä¸ä¼šåˆ·æ–°æŒä¹…化文件。 **原å化æœåŠ¡API:** 从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.DistributedDataManager.Preferences.Core **返回值:** | 类型 | 说明 | | ------------------- | ------------------------- | | Promise<void> | æ— è¿”å›žç»“æžœçš„Promise对象。 | **错误ç :** 以下错误ç 的详细介ç»è¯·å‚è§[用户首选项错误ç ](errorcode-preferences.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ------------------------------ | | 15500000 | Inner error. | **示例:** ```ts import { BusinessError } from '@kit.BasicServicesKit'; let promise = preferences.flush(); promise.then(() => { console.info("Succeeded in flushing."); }).catch((err: BusinessError) => { console.error(`Failed to flush. code: ${err.code}, message: ${err.message}`); }) ``` ### flushSync<sup>14+</sup> flushSync(): void 将缓å˜çš„Preferences实例ä¸çš„æ•°æ®å˜å‚¨åˆ°å…±äº«ç”¨æˆ·é¦–选项的æŒä¹…化文件ä¸ã€‚ > **说明:** > > å½“æ•°æ®æœªä¿®æ”¹æˆ–修改åŽçš„æ•°æ®ä¸Žç¼“å˜æ•°æ®ä¸€è‡´æ—¶ï¼Œä¸ä¼šåˆ·æ–°æŒä¹…化文件。 **原å化æœåŠ¡API:** 从API version 14å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.DistributedDataManager.Preferences.Core **错误ç :** 以下错误ç 的详细介ç»è¯·å‚è§[用户首选项错误ç ](errorcode-preferences.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ------------------------------ | | 15500000 | Inner error. | **示例:** ```ts preferences.flushSync(); ``` ### clear clear(): Promise<void> 清除缓å˜çš„Preferences实例ä¸çš„æ‰€æœ‰æ•°æ®ï¼Œå¯é€šè¿‡[flush](#flush)å°†Preferences实例æŒä¹…化,使用Promise异æ¥å›žè°ƒã€‚ **原å化æœåŠ¡API:** 从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.DistributedDataManager.Preferences.Core **返回值:** | 类型 | 说明 | | ------------------- | ------------------------- | | Promise<void> | æ— è¿”å›žç»“æžœçš„Promise对象。 | **错误ç :** 以下错误ç 的详细介ç»è¯·å‚è§[用户首选项错误ç ](errorcode-preferences.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ------------------------------ | | 15500000 | Inner error. | **示例:** ```ts import { BusinessError } from '@kit.BasicServicesKit'; let promise = preferences.clear(); promise.then(() => { console.info("Succeeded in clearing."); }).catch((err: BusinessError) => { console.error(`Failed to clear. code: ${err.code}, message: ${err.message}`); }) ``` ### clearSync clearSync(): void 清除缓å˜çš„Preferences实例ä¸çš„æ‰€æœ‰æ•°æ®ï¼Œå¯é€šè¿‡[flush](#flush)å°†Preferences实例æŒä¹…化,æ¤ä¸ºåŒæ¥æŽ¥å£ã€‚ **原å化æœåŠ¡API:** 从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.DistributedDataManager.Preferences.Core **错误ç :** 以下错误ç 的详细介ç»è¯·å‚è§[用户首选项错误ç ](errorcode-preferences.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ------------------------------ | | 15500000 | Inner error. | **示例:** ```ts preferences.clearSync(); ``` ### on('change') on(type: 'change', callback: Callback<string>): void 订阅数æ®å˜æ›´ï¼Œè®¢é˜…çš„Key的值å‘ç”Ÿå˜æ›´åŽï¼Œåœ¨æ‰§è¡Œ[flush](#flush)方法åŽï¼Œè§¦å‘callback回调。 > **说明:** > > 当调用[removePreferencesFromCache](#sendablepreferencesremovepreferencesfromcache)或者[deletePreferences](#sendablepreferencesdeletepreferences)åŽï¼Œè®¢é˜…的数æ®å˜æ›´ä¼šä¸»åЍ喿¶ˆè®¢é˜…ï¼Œåœ¨é‡æ–°[getPreferences](#sendablepreferencesgetpreferences)åŽéœ€è¦é‡æ–°è®¢é˜…æ•°æ®å˜æ›´ã€‚ **原å化æœåŠ¡API:** 从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.DistributedDataManager.Preferences.Core **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | -------- | -------- | ---- | ---------------------------------------- | | type | string | 是 | 事件类型,固定值'change',表示数æ®å˜æ›´ã€‚ | | callback | Callback<string> | 是 | 回调函数。返回å‘ç”Ÿå˜æ›´çš„Key。 | **错误ç :** 以下错误ç 的详细介ç»è¯·å‚è§[通用错误ç ](../errorcode-universal.md)å’Œ[用户首选项错误ç ](errorcode-preferences.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ------------------------------ | | 401 | Parameter error. Possible causes:<br>1. Mandatory parameters are left unspecified;<br>2. Incorrect parameter types;<br>3. Parameter verification failed. | | 15500000 | Inner error. | **示例:** ```ts import { BusinessError } from '@kit.BasicServicesKit'; let observer = (key: string) => { console.info("The key " + key + " changed."); } preferences.on('change', observer); preferences.putSync('startup', 'manual'); preferences.flush().then(() => { console.info("Succeeded in flushing."); }).catch((err: BusinessError) => { console.error(`Failed to flush. code: ${err.code}, message: ${err.message}`); }) ``` ### on('multiProcessChange') on(type: 'multiProcessChange', callback: Callback<string>): void 订阅进程间数æ®å˜æ›´ï¼Œå¤šä¸ªè¿›ç¨‹æŒæœ‰åŒä¸€ä¸ªé¦–选项文件时,在任æ„一个进程(包括本进程)执行[flush](#flush)方法,æŒä¹…化文件å‘ç”Ÿå˜æ›´åŽï¼Œè§¦å‘callback回调。 æœ¬æŽ¥å£æä¾›ç»™ç”³è¯·äº†[dataGroupId](#options)çš„åº”ç”¨è¿›è¡Œä½¿ç”¨ï¼Œæœªç”³è¯·çš„åº”ç”¨ä¸æŽ¨è使用,多进程æ“作å¯èƒ½ä¼šæŸåæŒä¹…化文件,导致数æ®ä¸¢å¤±ã€‚ > **说明:** > > åŒä¸€æŒä¹…化文件在当å‰è¿›ç¨‹è®¢é˜…进程间数æ®å˜æ›´çš„æœ€å¤§æ•°é‡ä¸º50次,超过最大é™åˆ¶åŽä¼šè®¢é˜…失败。建议在触å‘callback回调åŽåŠæ—¶å–消订阅。 > > 当调用[removePreferencesFromCache](#sendablepreferencesremovepreferencesfromcache)或者[deletePreferences](#sendablepreferencesdeletepreferences)åŽï¼Œè®¢é˜…的数æ®å˜æ›´ä¼šä¸»åЍ喿¶ˆè®¢é˜…ï¼Œåœ¨é‡æ–°[getPreferences](#sendablepreferencesgetpreferences)åŽéœ€è¦é‡æ–°è®¢é˜…æ•°æ®å˜æ›´ã€‚ **原å化æœåŠ¡API:** 从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.DistributedDataManager.Preferences.Core **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | -------- | -------- | ---- | ------------------------------------------------------------ | | type | string | 是 | 事件类型,固定值'multiProcessChange',表示多进程间的数æ®å˜æ›´ã€‚ | | callback | Callback<string> | 是 | 回调函数。返回å‘ç”Ÿå˜æ›´çš„Key。 | **错误ç :** 以下错误ç 的详细介ç»è¯·å‚è§[通用错误ç ](../errorcode-universal.md)å’Œ[用户首选项错误ç ](errorcode-preferences.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | -------------------------------------- | | 401 | Parameter error. Possible causes:<br>1. Mandatory parameters are left unspecified;<br>2. Incorrect parameter types;<br>3. Parameter verification failed. | | 15500000 | Inner error. | | 15500019 | Failed to obtain the subscription service. | **示例:** ```ts import { BusinessError } from '@kit.BasicServicesKit'; let observer = (key: string) => { console.info("The key " + key + " changed."); } preferences.on('multiProcessChange', observer); preferences.putSync('startup', 'manual'); preferences.flush().then(() => { console.info("Succeeded in flushing."); }).catch((err: BusinessError) => { console.error(`Failed to flush. code: ${err.code}, message: ${err.message}`); }) ``` ### on('dataChange') on(type: 'dataChange', keys: Array<string>, callback: Callback<lang.ISendable>): void 精确订阅数æ®å˜æ›´ï¼Œåªæœ‰è¢«è®¢é˜…çš„key值å‘ç”Ÿå˜æ›´åŽï¼Œåœ¨æ‰§è¡Œ[flush](#flush)方法åŽï¼Œè§¦å‘callback回调。 > **说明:** > > 当调用[removePreferencesFromCache](#sendablepreferencesremovepreferencesfromcache)或者[deletePreferences](#sendablepreferencesdeletepreferences)åŽï¼Œè®¢é˜…的数æ®å˜æ›´ä¼šä¸»åЍ喿¶ˆè®¢é˜…ï¼Œåœ¨é‡æ–°[getPreferences](#sendablepreferencesgetpreferences)åŽéœ€è¦é‡æ–°è®¢é˜…æ•°æ®å˜æ›´ã€‚ **原å化æœåŠ¡API:** 从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.DistributedDataManager.Preferences.Core **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | | type | string | 是 | 事件类型,固定值'dataChange',表示精确的数æ®å˜æ›´ã€‚ | | keys | Array<string> | 是 | 需è¦è®¢é˜…çš„key集åˆã€‚ | | callback | callback: Callback<[lang.ISendable](../../arkts-utils/arkts-sendable.md#isendable)> | 是 | 回调函数。回调支æŒè¿”回多个键值对,其ä¸é”®ä¸ºå‘ç”Ÿå˜æ›´çš„订阅keyï¼Œå€¼ä¸ºå˜æ›´åŽçš„æ•°æ®ï¼šæ”¯æŒnumberã€stringã€booleanã€bigint以åŠå¯åºåˆ—化的object。 | **错误ç :** 以下错误ç 的详细介ç»è¯·å‚è§[通用错误ç ](../errorcode-universal.md)å’Œ[用户首选项错误ç ](errorcode-preferences.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ------------------------------ | | 401 | Parameter error. Possible causes:<br>1. Mandatory parameters are left unspecified;<br>2. Incorrect parameter types;<br>3. Parameter verification failed. | | 15500000 | Inner error. | **示例:** ```ts import { BusinessError } from '@kit.BasicServicesKit'; import { lang } from '@kit.ArkTS'; let observer = (data: lang.ISendable) => { console.info(`observer : ${data}`) } let keys = ['name', 'age']; preferences.on('dataChange', keys, observer); preferences.putSync('name', 'xiaohong'); preferences.putSync('weight', 125); preferences.flush().then(() => { console.info("Succeeded in flushing."); }).catch((err: BusinessError) => { console.error(`Failed to flush. code: ${err.code}, message: ${err.message}`); }); ``` ### off('change') off(type: 'change', callback?: Callback<string>): void å–æ¶ˆè®¢é˜…æ•°æ®å˜æ›´ã€‚ **原å化æœåŠ¡API:** 从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.DistributedDataManager.Preferences.Core **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | -------- | -------- | ---- | ------------------------------------------------------------ | | type | string | 是 | 事件类型,固定值'change',表示数æ®å˜æ›´ã€‚ | | callback | Callback<string> | å¦ | 需è¦å–消的回调函数,ä¸å¡«å†™åˆ™å…¨éƒ¨å–消。 | **错误ç :** 以下错误ç 的详细介ç»è¯·å‚è§[通用错误ç ](../errorcode-universal.md)å’Œ[用户首选项错误ç ](errorcode-preferences.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ------------------------------ | | 401 | Parameter error. Possible causes:<br>1. Mandatory parameters are left unspecified;<br>2. Incorrect parameter types;<br>3. Parameter verification failed. | | 15500000 | Inner error. | **示例:** ```ts import { BusinessError } from '@kit.BasicServicesKit'; let observer = (key: string) => { console.info("The key " + key + " changed."); } preferences.on('change', observer); preferences.putSync('startup', 'auto'); preferences.flush().then(() => { console.info("Succeeded in flushing."); preferences.off('change', observer); }).catch((err: BusinessError) => { console.error(`Failed to flush. code: ${err.code}, message: ${err.message}`); }); ``` ### off('multiProcessChange') off(type: 'multiProcessChange', callback?: Callback<string>): void å–æ¶ˆè®¢é˜…进程间数æ®å˜æ›´ã€‚ æœ¬æŽ¥å£æä¾›ç»™ç”³è¯·äº†[dataGroupId](#options)çš„åº”ç”¨è¿›è¡Œä½¿ç”¨ï¼Œæœªç”³è¯·çš„åº”ç”¨ä¸æŽ¨è使用,多进程æ“作å¯èƒ½ä¼šæŸåæŒä¹…化文件,导致数æ®ä¸¢å¤±ã€‚ **原å化æœåŠ¡API:** 从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.DistributedDataManager.Preferences.Core **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | -------- | -------- | ---- | ------------------------------------------------------------ | | type | string | 是 | 事件类型,固定值'multiProcessChange',表示多进程间的数æ®å˜æ›´ã€‚ | | callback | Callback<string> | å¦ | 需è¦å–消的回调函数,ä¸å¡«å†™åˆ™å…¨éƒ¨å–消。 | **错误ç :** 以下错误ç 的详细介ç»è¯·å‚è§[通用错误ç ](../errorcode-universal.md)å’Œ[用户首选项错误ç ](errorcode-preferences.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ------------------------------ | | 401 | Parameter error. Possible causes:<br>1. Mandatory parameters are left unspecified;<br>2. Incorrect parameter types;<br>3. Parameter verification failed. | | 15500000 | Inner error. | **示例:** ```ts import { BusinessError } from '@kit.BasicServicesKit'; let observer = (key: string) => { console.info("The key " + key + " changed."); } preferences.on('multiProcessChange', observer); preferences.putSync('startup', 'auto'); preferences.flush().then(() => { console.info("Succeeded in flushing."); preferences.off('multiProcessChange', observer); }).catch((err: BusinessError) => { console.error(`Failed to flush. code: ${err.code}, message: ${err.message}`); }); ``` ### off('dataChange') off(type: 'dataChange', keys: Array<string>, callback?: Callback<lang.ISendable>): void å–æ¶ˆç²¾ç¡®è®¢é˜…æ•°æ®å˜æ›´ã€‚ **原å化æœåŠ¡API:** 从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.DistributedDataManager.Preferences.Core **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | | type | string | 是 | 事件类型,固定值'dataChange',表示精确的数æ®å˜æ›´ã€‚ | | keys | Array<string> | 是 | 需è¦å–消订阅的key集åˆï¼Œå½“keysä¸ºç©ºæ•°ç»„æ—¶ï¼Œè¡¨ç¤ºå–æ¶ˆè®¢é˜…全部key;当keys为éžç©ºæ•°ç»„时,表示åªå–消订阅key集åˆä¸çš„key。 | | callback | Callback<[lang.ISendable](../../arkts-utils/arkts-sendable.md#isendable)> | å¦ | 需è¦å–消的回调函数,若callbackä¸å¡«å†™ï¼Œè¡¨ç¤ºæ‰€æœ‰çš„callback都需è¦å¤„ç†ï¼›è‹¥callback填写,表示åªå¤„ç†è¯¥callback。 | **错误ç :** 以下错误ç 的详细介ç»è¯·å‚è§[通用错误ç ](../errorcode-universal.md)å’Œ[用户首选项错误ç ](errorcode-preferences.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | ------------------------------ | | 401 | Parameter error. Possible causes:<br>1. Mandatory parameters are left unspecified;<br>2. Incorrect parameter types;<br>3. Parameter verification failed. | | 15500000 | Inner error. | **示例:** ```ts import { BusinessError } from '@kit.BasicServicesKit'; import { lang } from '@kit.ArkTS'; let observer = (data: lang.ISendable) => { console.info(`observer : ${data}`) } let keys = ['name', 'age']; preferences.on('dataChange', keys, observer); preferences.putSync('name', 'xiaohong'); preferences.putSync('weight', 125); preferences.flush().then(() => { console.info("Succeeded in flushing."); preferences.off('dataChange', keys, observer); }).catch((err: BusinessError) => { console.error(`Failed to flush. code: ${err.code}, message: ${err.message}`); }); ```