首页 > 建站教程 > APP开发,混合APP >  封装鸿蒙HarmonyOS preferences首选项保存获取数据工具类正文

封装鸿蒙HarmonyOS preferences首选项保存获取数据工具类

一、工具类:PreferencesUtil.ets

工具类,包括创建Preferences首选项、保存和获取对应Key的数据等方法

示例代码中以保存Token字符串值为例:

01import { preferences } from '@kit.ArkData';
02import { GlobalContext } from './GlobalContext';
03const PREFERENCES_NAME = 'currPreferences';
04const KEY_APP_LOGIN_TOKEN = 'loginToken';
05/**
06 * 首选项-工具类 保存应用数据
07 */
08export class PreferencesUtil {
09  createPreferences(context: Context) {
10    let currPreferences: Function = (() => {
11      return preferences.getPreferences(context, {name: PREFERENCES_NAME});
12    })
13    GlobalContext.getContext().setObject('getPreferences',currPreferences);
14  }
15  /**
16   * 保存Token
17   * @param token
18   */
19  saveLoginToken(token: string){
20    let currPreferences: Function = GlobalContext.getContext().getObject('getPreferences') as Function;
21    currPreferences().then((preferences: preferences.Preferences) => {
22      preferences.put(KEY_APP_LOGIN_TOKEN, token);
23      preferences.flush();
24    });
25  }
26  /**
27   * 获取Token
28   * @returns
29   */
30  async getLoginToken(){
31    let currPreferences: Function = GlobalContext.getContext().getObject('getPreferences') as Function;
32    let token: string = await (await currPreferences()).get(KEY_APP_LOGIN_TOKEN, '');
33    return token;
34  }
35}
36export default new PreferencesUtil();


GlobalContext.ets

01export class GlobalContext {
02  private constructor() { }
03  private static instance: GlobalContext;
04  private _objects = new Map<string, Object>();
05  public static getContext(): GlobalContext {
06    if (!GlobalContext.instance) {
07      GlobalContext.instance = new GlobalContext();
08    }
09    return GlobalContext.instance;
10  }
11  getObject(value: string): Object | undefined {
12    return this._objects.get(value);
13  }
14  setObject(key: string, objectClass: Object): void {
15    this._objects.set(key, objectClass);
16  }
17}


二、使用

1、EntryAbility.ets中的onCreate()方法中调用相应方法创建首选项示例

1export default class EntryAbility extends UIAbility {
2  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) {
3    hilog.info(0x0000, 'testTag''%{public}s''Ability onCreate');
4//添加以下方法调用代码
5    GlobalContext.getContext().setObject('abilityWant', want);
6    PreferencesUtil.createPreferences(this.context);
7  }
8  ...
9}


2、保存Token值

直接调用工具类的方法

1PreferencesUtil.saveLoginToken('xxx');


3、获取保存的Token值

1PreferencesUtil.getLoginToken().then((value) => {
2   //value就是获取到的值
3});