用戶首選項

2024-01-23 16:08 更新

用戶首選項為應用提供Key-Value鍵值型的數據處理能力,支持應用持久化輕量級數據,并對其修改和查詢。

數據存儲形式為鍵值對,鍵的類型為字符串型,值的存儲數據類型包括數字型、字符型、布爾型以及這3種類型的數組類型。

說明

本模塊首批接口從API version 9開始支持。后續(xù)版本的新增接口,采用上角標單獨標記接口的起始版本。

導入模塊

  1. import dataPreferences from '@ohos.data.preferences';

常量

系統(tǒng)能力: SystemCapability.DistributedDataManager.Preferences.Core

名稱

參數類型

可讀

可寫

說明

MAX_KEY_LENGTH

number

Key的最大長度限制為80個字節(jié)。

MAX_VALUE_LENGTH

number

Value的最大長度限制為8192個字節(jié)。

dataPreferences.getPreferences

getPreferences(context: Context, name: string, callback: AsyncCallback<Preferences>): void

獲取Preferences實例,使用callback異步回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.Preferences.Core

參數:

參數名

類型

必填

說明

context

Context

應用上下文。

FA模型的應用Context定義見Context

Stage模型的應用Context定義見Context。

name

string

Preferences實例的名稱。

callback

AsyncCallback<Preferences>

回調函數。當獲取Preferences實例成功,err為undefined,返回Preferences實例;否則err為錯誤對象。

示例:

FA模型示例:

  1. // 獲取context
  2. import featureAbility from '@ohos.ability.featureAbility';
  3. let context = featureAbility.getContext();
  4. let preferences = null;
  5. try {
  6. dataPreferences.getPreferences(context, 'mystore', function (err, val) {
  7. if (err) {
  8. console.error("Failed to get preferences. code =" + err.code + ", message =" + err.message);
  9. return;
  10. }
  11. preferences = val;
  12. console.info("Succeeded in getting preferences.");
  13. })
  14. } catch (err) {
  15. console.error("Failed to get preferences. code =" + err.code + ", message =" + err.message);
  16. }

Stage模型示例:

  1. import UIAbility from '@ohos.app.ability.UIAbility';
  2. let preferences = null;
  3. class EntryAbility extends UIAbility {
  4. onWindowStageCreate(windowStage) {
  5. try {
  6. dataPreferences.getPreferences(this.context, 'mystore', function (err, val) {
  7. if (err) {
  8. console.error("Failed to get preferences. code =" + err.code + ", message =" + err.message);
  9. return;
  10. }
  11. preferences = val;
  12. console.info("Succeeded in getting preferences.");
  13. })
  14. } catch (err) {
  15. console.error("Failed to get preferences. code =" + err.code + ", message =" + err.message);
  16. }
  17. }
  18. }

dataPreferences.getPreferences

getPreferences(context: Context, name: string): Promise<Preferences>

獲取Preferences實例,使用Promise異步回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.Preferences.Core

參數:

參數名

類型

必填

說明

context

Context

應用上下文。

FA模型的應用Context定義見Context。

Stage模型的應用Context定義見Context

name

string

Preferences實例的名稱。

返回值:

類型

說明

Promise<Preferences>

Promise對象,返回Preferences實例。

示例:

FA模型示例:

  1. // 獲取context
  2. import featureAbility from '@ohos.ability.featureAbility';
  3. let context = featureAbility.getContext();
  4. let preferences = null;
  5. try {
  6. let promise = dataPreferences.getPreferences(context, 'mystore');
  7. promise.then((object) => {
  8. preferences = object;
  9. console.info("Succeeded in getting preferences.");
  10. }).catch((err) => {
  11. console.error("Failed to get preferences. code =" + err.code + ", message =" + err.message);
  12. })
  13. } catch(err) {
  14. console.error("Failed to get preferences. code =" + err.code + ", message =" + err.message);
  15. }

Stage模型示例:

  1. import UIAbility from '@ohos.app.ability.UIAbility';
  2. let preferences = null;
  3. class EntryAbility extends UIAbility {
  4. onWindowStageCreate(windowStage) {
  5. try {
  6. let promise = dataPreferences.getPreferences(this.context, 'mystore');
  7. promise.then((object) => {
  8. preferences = object;
  9. console.info("Succeeded in getting preferences.");
  10. }).catch((err) => {
  11. console.error("Failed to get preferences. code =" + err.code + ", message =" + err.message);
  12. })
  13. } catch(err) {
  14. console.error("Failed to get preferences. code =" + err.code + ", message =" + err.message);
  15. }
  16. }
  17. }

dataPreferences.deletePreferences

deletePreferences(context: Context, name: string, callback: AsyncCallback<void>): void

從內存中移除指定的Preferences實例,使用callback異步回調。

若Preferences實例有對應的持久化文件,則同時刪除其持久化文件。

調用該接口后,應用不允許再使用該Preferences實例進行數據操作,否則會出現(xiàn)數據一致性問題。

系統(tǒng)能力: SystemCapability.DistributedDataManager.Preferences.Core

參數:

參數名

類型

必填

說明

context

Context

應用上下文。

FA模型的應用Context定義見Context。

Stage模型的應用Context定義見Context。

name

string

Preferences實例的名稱。

callback

AsyncCallback<void>

回調函數。當移除成功,err為undefined,否則為錯誤對象。

錯誤碼:

以下錯誤碼的詳細介紹請參見用戶首選項錯誤碼。

錯誤碼ID

錯誤信息

15500010

Failed to delete preferences.

示例:

FA模型示例:

  1. // 獲取context
  2. import featureAbility from '@ohos.ability.featureAbility';
  3. let context = featureAbility.getContext();
  4. try {
  5. dataPreferences.deletePreferences(context, 'mystore', function (err) {
  6. if (err) {
  7. console.error("Failed to delete preferences. code =" + err.code + ", message =" + err.message);
  8. return;
  9. }
  10. console.info("Succeeded in deleting preferences." );
  11. })
  12. } catch (err) {
  13. console.error("Failed to delete preferences. code =" + err.code + ", message =" + err.message);
  14. }

Stage模型示例:

  1. import UIAbility from '@ohos.app.ability.UIAbility';
  2. class EntryAbility extends UIAbility {
  3. onWindowStageCreate(windowStage) {
  4. try {
  5. dataPreferences.deletePreferences(this.context, 'mystore', function (err) {
  6. if (err) {
  7. console.error("Failed to delete preferences. code =" + err.code + ", message =" + err.message);
  8. return;
  9. }
  10. console.info("Succeeded in deleting preferences." );
  11. })
  12. } catch (err) {
  13. console.error("Failed to delete preferences. code =" + err.code + ", message =" + err.message);
  14. }
  15. }
  16. }

dataPreferences.deletePreferences

deletePreferences(context: Context, name: string): Promise<void>

從內存中移除指定的Preferences實例,使用Promise異步回調。

若Preferences實例有對應的持久化文件,則同時刪除其持久化文件。

調用該接口后,應用不允許再使用該Preferences實例進行數據操作,否則會出現(xiàn)數據一致性問題。

系統(tǒng)能力: SystemCapability.DistributedDataManager.Preferences.Core

參數:

參數名

類型

必填

說明

context

Context

應用上下文。

FA模型的應用Context定義見Context

Stage模型的應用Context定義見Context。

name

string

Preferences實例的名稱。

返回值:

類型

說明

Promise<void>

無返回結果的Promise對象。

錯誤碼:

以下錯誤碼的詳細介紹請參見用戶首選項錯誤碼。

錯誤碼ID

錯誤信息

15500010

Failed to delete preferences.

示例:

FA模型示例:

  1. // 獲取context
  2. import featureAbility from '@ohos.ability.featureAbility';
  3. let context = featureAbility.getContext();
  4. try {
  5. let promise = dataPreferences.deletePreferences(context, 'mystore');
  6. promise.then(() => {
  7. console.info("Succeeded in deleting preferences.");
  8. }).catch((err) => {
  9. console.error("Failed to delete preferences. code =" + err.code + ", message =" + err.message);
  10. })
  11. } catch(err) {
  12. console.error("Failed to delete preferences. code =" + err.code + ", message =" + err.message);
  13. }

Stage模型示例:

  1. import UIAbility from '@ohos.app.ability.UIAbility';
  2. class EntryAbility extends UIAbility {
  3. onWindowStageCreate(windowStage) {
  4. try{
  5. let promise = dataPreferences.deletePreferences(this.context, 'mystore');
  6. promise.then(() => {
  7. console.info("Succeeded in deleting preferences.");
  8. }).catch((err) => {
  9. console.error("Failed to delete preferences. code =" + err.code + ", message =" + err.message);
  10. })
  11. } catch(err) {
  12. console.error("Failed to delete preferences. code =" + err.code + ", message =" + err.message);
  13. }
  14. }
  15. }

dataPreferences.removePreferencesFromCache

removePreferencesFromCache(context: Context, name: string, callback: AsyncCallback<void>): void

從內存中移除指定的Preferences實例,使用callback異步回調。

調用該接口后,應用不允許再使用該Preferences實例進行數據操作,否則會出現(xiàn)數據一致性問題。

系統(tǒng)能力: SystemCapability.DistributedDataManager.Preferences.Core

參數:

參數名

類型

必填

說明

context

Context

應用上下文。

FA模型的應用Context定義見Context。

Stage模型的應用Context定義見Context。

name

string

Preferences實例的名稱。

callback

AsyncCallback<void>

回調函數。當移除成功,err為undefined,否則為錯誤對象。

示例:

FA模型示例:

  1. // 獲取context
  2. import featureAbility from '@ohos.ability.featureAbility';
  3. let context = featureAbility.getContext();
  4. try {
  5. dataPreferences.removePreferencesFromCache(context, 'mystore', function (err) {
  6. if (err) {
  7. console.error("Failed to remove preferences. code =" + err.code + ", message =" + err.message);
  8. return;
  9. }
  10. console.info("Succeeded in removing preferences.");
  11. })
  12. } catch (err) {
  13. console.error("Failed to remove preferences. code =" + err.code + ", message =" + err.message);
  14. }

Stage模型示例:

  1. import UIAbility from '@ohos.app.ability.UIAbility';
  2. class EntryAbility extends UIAbility {
  3. onWindowStageCreate(windowStage) {
  4. try {
  5. dataPreferences.removePreferencesFromCache(this.context, 'mystore', function (err) {
  6. if (err) {
  7. console.error("Failed to remove preferences. code =" + err.code + ", message =" + err.message);
  8. return;
  9. }
  10. console.info("Succeeded in removing preferences.");
  11. })
  12. } catch (err) {
  13. console.error("Failed to remove preferences. code =" + err.code + ", message =" + err.message);
  14. }
  15. }
  16. }

dataPreferences.removePreferencesFromCache

removePreferencesFromCache(context: Context, name: string): Promise<void>

從內存中移除指定的Preferences實例,使用Promise異步回調。

調用該接口后,應用不允許再使用該Preferences實例進行數據操作,否則會出現(xiàn)數據一致性問題。

系統(tǒng)能力: SystemCapability.DistributedDataManager.Preferences.Core

參數:

參數名

類型

必填

說明

context

Context

應用上下文。

FA模型的應用Context定義見Context。

Stage模型的應用Context定義見Context。

name

string

Preferences實例的名稱。

返回值:

類型

說明

Promise<void>

無返回結果的Promise對象。

示例:

FA模型示例:

  1. // 獲取context
  2. import featureAbility from '@ohos.ability.featureAbility';
  3. let context = featureAbility.getContext();
  4. try {
  5. let promise = dataPreferences.removePreferencesFromCache(context, 'mystore');
  6. promise.then(() => {
  7. console.info("Succeeded in removing preferences.");
  8. }).catch((err) => {
  9. console.error("Failed to remove preferences. code =" + err.code + ", message =" + err.message);
  10. })
  11. } catch(err) {
  12. console.error("Failed to remove preferences. code =" + err.code + ", message =" + err.message);
  13. }

Stage模型示例:

  1. import UIAbility from '@ohos.app.ability.UIAbility';
  2. class EntryAbility extends UIAbility {
  3. onWindowStageCreate(windowStage) {
  4. try {
  5. let promise = dataPreferences.removePreferencesFromCache(this.context, 'mystore');
  6. promise.then(() => {
  7. console.info("Succeeded in removing preferences.");
  8. }).catch((err) => {
  9. console.error("Failed to remove preferences. code =" + err.code + ", message =" + err.message);
  10. })
  11. } catch(err) {
  12. console.error("Failed to remove preferences. code =" + err.code + ", message =" + err.message);
  13. }
  14. }
  15. }

Preferences

存儲實例,提供獲取和修改存儲數據的接口。

下列接口都需先使用data_preferences.getPreferences獲取到Preferences實例,再通過此實例調用對應接口。

get

get(key: string, defValue: ValueType, callback: AsyncCallback<ValueType>): void

獲取鍵對應的值,如果值為null或者非默認值類型,返回默認數據defValue,使用callback異步回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.Preferences.Core

參數:

參數名

類型

必填

說明

key

string

要獲取的存儲Key名稱,不能為空。

defValue

ValueType

默認返回值。支持number、string、boolean、Array<number>、Array<string>、Array<boolean>類型。

callback

AsyncCallback<ValueType>

回調函數。當獲取成功時,err為undefined,data為鍵對應的值;否則err為錯誤對象。

示例:

  1. try {
  2. preferences.get('startup', 'default', function (err, val) {
  3. if (err) {
  4. console.error("Failed to get value of 'startup'. code =" + err.code + ", message =" + err.message);
  5. return;
  6. }
  7. console.info("Succeeded in getting value of 'startup'. val: " + val);
  8. })
  9. } catch (err) {
  10. console.error("Failed to get value of 'startup'. code =" + err.code + ", message =" + err.message);
  11. }

get

get(key: string, defValue: ValueType): Promise<ValueType>

獲取鍵對應的值,如果值為null或者非默認值類型,返回默認數據defValue,使用Promise異步回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.Preferences.Core

參數:

參數名

類型

必填

說明

key

string

要獲取的存儲Key名稱,不能為空。

defValue

ValueType

默認返回值。支持number、string、boolean、Array<number>、Array<string>、Array<boolean>類型。

返回值:

類型

說明

Promise<ValueType>

Promise對象,返回鍵對應的值。

示例:

  1. try {
  2. let promise = preferences.get('startup', 'default');
  3. promise.then((data) => {
  4. console.info("Succeeded in getting value of 'startup'. Data: " + data);
  5. }).catch((err) => {
  6. console.error("Failed to get value of 'startup'. code =" + err.code + ", message =" + err.message);
  7. })
  8. } catch(err) {
  9. console.error("Failed to get value of 'startup'. code =" + err.code + ", message =" + err.message);
  10. }

getAll

getAll(callback: AsyncCallback<Object>): void;

獲取含有所有鍵值的Object對象。

系統(tǒng)能力: SystemCapability.DistributedDataManager.Preferences.Core

參數:

參數名

類型

必填

說明

callback

AsyncCallback<Object>

回調函數。當獲取成功,err為undefined,value為含有所有鍵值的Object對象;否則err為錯誤對象。

示例:

  1. try {
  2. preferences.getAll(function (err, value) {
  3. if (err) {
  4. console.error("Failed to get all key-values. code =" + err.code + ", message =" + err.message);
  5. return;
  6. }
  7. let allKeys = Object.keys(value);
  8. console.info("getAll keys = " + allKeys);
  9. console.info("getAll object = " + JSON.stringify(value));
  10. })
  11. } catch (err) {
  12. console.error("Failed to get all key-values. code =" + err.code + ", message =" + err.message);
  13. }

getAll

getAll(): Promise<Object>

獲取含有所有鍵值的Object對象。

系統(tǒng)能力: SystemCapability.DistributedDataManager.Preferences.Core

返回值:

類型

說明

Promise<Object>

Promise對象,返回含有所有鍵值的Object對象。

示例:

  1. try {
  2. let promise = preferences.getAll();
  3. promise.then((value) => {
  4. let allKeys = Object.keys(value);
  5. console.info('getAll keys = ' + allKeys);
  6. console.info("getAll object = " + JSON.stringify(value));
  7. }).catch((err) => {
  8. console.error("Failed to get all key-values. code =" + err.code + ", message =" + err.message);
  9. })
  10. } catch (err) {
  11. console.error("Failed to get all key-values. code =" + err.code + ", message =" + err.message);
  12. }

put

put(key: string, value: ValueType, callback: AsyncCallback<void>): void

將數據寫入Preferences實例,可通過flush將Preferences實例持久化,使用callback異步回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.Preferences.Core

參數:

參數名

類型

必填

說明

key

string

要修改的存儲的Key,不能為空。

value

ValueType

存儲的新值。支持number、string、boolean、Array<number>、Array<string>、Array<boolean>類型。

callback

AsyncCallback<void>

回調函數。當數據寫入成功,err為undefined;否則為錯誤對象。

示例:

  1. try {
  2. preferences.put('startup', 'auto', function (err) {
  3. if (err) {
  4. console.error("Failed to put value of 'startup'. code =" + err.code + ", message =" + err.message);
  5. return;
  6. }
  7. console.info("Succeeded in putting value of 'startup'.");
  8. })
  9. } catch (err) {
  10. console.error("Failed to put value of 'startup'. code =" + err.code + ", message =" + err.message);
  11. }

put

put(key: string, value: ValueType): Promise<void>

將數據寫入Preferences實例,可通過flush將Preferences實例持久化,使用Promise異步回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.Preferences.Core

參數:

參數名

類型

必填

說明

key

string

要修改的存儲的Key,不能為空。

value

ValueType

存儲的新值。支持number、string、boolean、Array<number>、Array<string>、Array<boolean>類型。

返回值:

類型

說明

Promise<void>

無返回結果的Promise對象。

示例:

  1. try {
  2. let promise = preferences.put('startup', 'auto');
  3. promise.then(() => {
  4. console.info("Succeeded in putting value of 'startup'.");
  5. }).catch((err) => {
  6. console.error("Failed to put value of 'startup'. code =" + err.code +", message =" + err.message);
  7. })
  8. } catch(err) {
  9. console.error("Failed to put value of 'startup'. code =" + err.code +", message =" + err.message);
  10. }

has

has(key: string, callback: AsyncCallback<boolean>): void

檢查Preferences實例是否包含名為給定Key的存儲鍵值對,使用callback異步回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.Preferences.Core

參數:

參數名

類型

必填

說明

key

string

要檢查的存儲key名稱,不能為空。

callback

AsyncCallback<boolean>

回調函數。返回Preferences實例是否包含給定key的存儲鍵值對,true表示存在,false表示不存在。

示例:

  1. try {
  2. preferences.has('startup', function (err, val) {
  3. if (err) {
  4. console.error("Failed to check the key 'startup'. code =" + err.code + ", message =" + err.message);
  5. return;
  6. }
  7. if (val) {
  8. console.info("The key 'startup' is contained.");
  9. } else {
  10. console.info("The key 'startup' dose not contain.");
  11. }
  12. })
  13. } catch (err) {
  14. console.error("Failed to check the key 'startup'. code =" + err.code + ", message =" + err.message);
  15. }

has

has(key: string): Promise<boolean>

檢查Preferences實例是否包含名為給定Key的存儲鍵值對,使用Promise異步回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.Preferences.Core

參數:

參數名

類型

必填

說明

key

string

要檢查的存儲key名稱,不能為空。

返回值:

類型

說明

Promise<boolean>

Promise對象。返回Preferences實例是否包含給定key的存儲鍵值對,true表示存在,false表示不存在。

示例:

  1. try {
  2. let promise = preferences.has('startup');
  3. promise.then((val) => {
  4. if (val) {
  5. console.info("The key 'startup' is contained.");
  6. } else {
  7. console.info("The key 'startup' dose not contain.");
  8. }
  9. }).catch((err) => {
  10. console.error("Failed to check the key 'startup'. code =" + err.code + ", message =" + err.message);
  11. })
  12. } catch(err) {
  13. console.error("Failed to check the key 'startup'. code =" + err.code + ", message =" + err.message);
  14. }

delete

delete(key: string, callback: AsyncCallback<void>): void

從Preferences實例中刪除名為給定Key的存儲鍵值對,使用callback異步回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.Preferences.Core

參數:

參數名

類型

必填

說明

key

string

要刪除的存儲Key名稱,不能為空。

callback

AsyncCallback<void>

回調函數。當刪除成功,err為undefined;否則為錯誤對象。

示例:

  1. try {
  2. preferences.delete('startup', function (err) {
  3. if (err) {
  4. console.error("Failed to delete the key 'startup'. code =" + err.code + ", message =" + err.message);
  5. return;
  6. }
  7. console.info("Succeeded in deleting the key 'startup'.");
  8. })
  9. } catch (err) {
  10. console.error("Failed to delete the key 'startup'. code =" + err.code + ", message =" + err.message);
  11. }

delete

delete(key: string): Promise<void>

從Preferences實例中刪除名為給定Key的存儲鍵值對,使用Promise異步回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.Preferences.Core

參數:

參數名

類型

必填

說明

key

string

要刪除的存儲key名稱,不能為空。

返回值:

類型

說明

Promise<void>

無返回結果的Promise對象。

示例:

  1. try {
  2. let promise = preferences.delete('startup');
  3. promise.then(() => {
  4. console.info("Succeeded in deleting the key 'startup'.");
  5. }).catch((err) => {
  6. console.error("Failed to delete the key 'startup'. code =" + err.code +", message =" + err.message);
  7. })
  8. } catch(err) {
  9. console.error("Failed to delete the key 'startup'. code =" + err.code +", message =" + err.message);
  10. }

flush

flush(callback: AsyncCallback<void>): void

將當前Preferences實例的數據異步存儲到用戶首選項的持久化文件中,使用callback異步回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.Preferences.Core

參數:

參數名

類型

必填

說明

callback

AsyncCallback<void>

回調函數。當保存成功,err為undefined;否則為錯誤對象。

示例:

  1. try {
  2. preferences.flush(function (err) {
  3. if (err) {
  4. console.error("Failed to flush. code =" + err.code + ", message =" + err.message);
  5. return;
  6. }
  7. console.info("Succeeded in flushing.");
  8. })
  9. } catch (err) {
  10. console.error("Failed to flush. code =" + err.code + ", message =" + err.message);
  11. }

flush

flush(): Promise<void>

將當前Preferences實例的數據異步存儲到用戶首選項的持久化文件中,使用Promise異步回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.Preferences.Core

返回值:

類型

說明

Promise<void>

無返回結果的Promise對象。

示例:

  1. try {
  2. let promise = preferences.flush();
  3. promise.then(() => {
  4. console.info("Succeeded in flushing.");
  5. }).catch((err) => {
  6. console.error("Failed to flush. code =" + err.code + ", message =" + err.message);
  7. })
  8. } catch (err) {
  9. console.error("Failed to flush. code =" + err.code + ", message =" + err.message);
  10. }

clear

clear(callback: AsyncCallback<void>): void

清除此Preferences實例中的所有存儲,使用callback異步回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.Preferences.Core

參數:

參數名

類型

必填

說明

callback

AsyncCallback<void>

回調函數。當清除成功,err為undefined;否則為錯誤對象。

示例:

  1. try {
  2. preferences.clear(function (err) {
  3. if (err) {
  4. console.error("Failed to clear. code =" + err.code + ", message =" + err.message);
  5. return;
  6. }
  7. console.info("Succeeded in clearing.");
  8. })
  9. } catch (err) {
  10. console.error("Failed to clear. code =" + err.code + ", message =" + err.message);
  11. }

clear

clear(): Promise<void>

清除此Preferences實例中的所有存儲,使用Promise異步回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.Preferences.Core

返回值:

類型

說明

Promise<void>

無返回結果的Promise對象。

示例:

  1. try {
  2. let promise = preferences.clear();
  3. promise.then(() => {
  4. console.info("Succeeded in clearing.");
  5. }).catch((err) => {
  6. console.error("Failed to clear. code =" + err.code + ", message =" + err.message);
  7. })
  8. } catch(err) {
  9. console.error("Failed to clear. code =" + err.code + ", message =" + err.message);
  10. }

on('change')

on(type: 'change', callback: Callback<{ key : string }>): void

訂閱數據變更,訂閱的Key的值發(fā)生變更后,在執(zhí)行flush方法后,觸發(fā)callback回調。

系統(tǒng)能力: SystemCapability.DistributedDataManager.Preferences.Core

參數:

參數名

類型

必填

說明

type

string

事件類型,固定值'change',表示數據變更。

callback

Callback<{ key : string }>

回調對象實例。

示例:

  1. try {
  2. dataPreferences.getPreferences(this.context, 'mystore', function (err, preferences) {
  3. if (err) {
  4. console.error("Failed to get preferences.");
  5. return;
  6. }
  7. let observer = function (key) {
  8. console.info("The key " + key + " changed.");
  9. }
  10. preferences.on('change', observer);
  11. preferences.put('startup', 'manual', function (err) {
  12. if (err) {
  13. console.error("Failed to put the value of 'startup'. Cause: " + err);
  14. return;
  15. }
  16. console.info("Succeeded in putting the value of 'startup'.");
  17. preferences.flush(function (err) {
  18. if (err) {
  19. console.error("Failed to flush. Cause: " + err);
  20. return;
  21. }
  22. console.info("Succeeded in flushing.");
  23. })
  24. })
  25. })
  26. } catch (err) {
  27. console.error("Failed to flush. code =" + err.code + ", message =" + err.message);
  28. }

off('change')

off(type: 'change', callback?: Callback<{ key : string }>): void

取消訂閱數據變更。

系統(tǒng)能力: SystemCapability.DistributedDataManager.Preferences.Core

參數:

參數名

類型

必填

說明

type

string

事件類型,固定值'change',表示數據變更。

callback

Callback<{ key : string }>

需要取消的回調對象實例,不填寫則全部取消。

示例:

  1. try {
  2. dataPreferences.getPreferences(this.context, 'mystore', function (err, preferences) {
  3. if (err) {
  4. console.error("Failed to get preferences.");
  5. return;
  6. }
  7. let observer = function (key) {
  8. console.info("The key " + key + " changed.");
  9. }
  10. preferences.on('change', observer);
  11. preferences.put('startup', 'auto', function (err) {
  12. if (err) {
  13. console.error("Failed to put the value of 'startup'. Cause: " + err);
  14. return;
  15. }
  16. console.info("Succeeded in putting the value of 'startup'.");
  17. preferences.flush(function (err) {
  18. if (err) {
  19. console.error("Failed to flush. Cause: " + err);
  20. return;
  21. }
  22. console.info("Succeeded in flushing.");
  23. })
  24. preferences.off('change', observer);
  25. })
  26. })
  27. } catch (err) {
  28. console.error("Failed to flush. code =" + err.code + ", message =" + err.message);
  29. }

ValueType

用于表示允許的數據字段類型。

系統(tǒng)能力: SystemCapability.DistributedDataManager.Preferences.Core

類型

說明

number

表示值類型為數字。

string

表示值類型為字符串。

boolean

表示值類型為布爾值。

Array<number>

表示值類型為數字類型的數組。

Array<boolean>

表示值類型為布爾類型的數組。

Array<string>

表示值類型為字符串類型的數組。

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號