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