写点什么

鸿蒙 +next+ 封装轻量级缓存工具 PreferencesUtil

作者:flfljh
  • 2024-12-16
    湖南
  • 本文字数:2317 字

    阅读完需:约 8 分钟

鸿蒙 next 封装轻量级缓存工具 PreferencesUtil

import preferences from '@ohos.data.preferences';import dataPreferences from '@ohos.data.preferences';import { AppUtil } from './AppUtil';

type PreferencesValue = string
/** * preferences 轻量级缓存工具 */export class PreferencesUtil { private constructor() { }
private static defaultPreferenceName: string = "myPreferences"; private static preferences: preferences.Preferences;
/** * 获取Preferences实例 * @param name * @returns */ private static getPreferencesSync(): preferences.Preferences { if (!PreferencesUtil.preferences) { PreferencesUtil.preferences = dataPreferences.getPreferencesSync(AppUtil.getContext(), { name: PreferencesUtil.defaultPreferenceName }); } return PreferencesUtil.preferences; }
/** * 获取Preferences实例 * @param name * @returns */ private static async getPreferences(): Promise<preferences.Preferences> { if (!PreferencesUtil.preferences) { PreferencesUtil.preferences = await dataPreferences.getPreferences(AppUtil.getContext(), PreferencesUtil.defaultPreferenceName); } return PreferencesUtil.preferences; }

/** * 将数据缓存 * @param key * @param value */ static putSync(key: string, value: PreferencesValue) { let preferences = PreferencesUtil.getPreferencesSync(); //获取实例 preferences.putSync(key, value); preferences.flush(); //此处一定要flush,要不然不能永久序列化到本地 }
/** * 将数据缓存 * @param key * @param value */ static async put(key: string, value: PreferencesValue) { let preferences = await PreferencesUtil.getPreferences(); //获取实例 await preferences.put(key, value); await preferences.flush(); //此处一定要flush,要不然不能永久序列化到本地 }

/** * 获取缓存值 * @param key * @param defValue * @returns */ static getSync(key: string, defValue: PreferencesValue): PreferencesValue { let preferences = PreferencesUtil.getPreferencesSync(); //获取实例 return preferences.getSync(key, defValue) as PreferencesValue; }
/** * 获取缓存值 * @param key * @param defValue * @returns */ static async get(key: string, defValue: PreferencesValue): Promise<PreferencesValue> { let preferences = await PreferencesUtil.getPreferences(); //获取实例 return preferences.get(key, defValue) as Promise<PreferencesValue>; }
static getAllSync() { let preferences = PreferencesUtil.getPreferencesSync(); //获取实例 return preferences.getAllSync(); }

/** * 获取string类型的缓存值 * @param key * @returns */ static getStringSync(key: string): string { return PreferencesUtil.getSync(key, "") as string; }
/** * 获取string类型的缓存值 * @param key * @returns */ static async getString(key: string): Promise<string> { return (await PreferencesUtil.get(key, "")) as string; }

/** * 检查缓存的Preferences实例中是否包含名为给定Key的存储键值对 * @param key * @returns */ static hasSync(key: string) { return PreferencesUtil.getPreferencesSync().hasSync(key); }
/** * 检查缓存的Preferences实例中是否包含名为给定Key的存储键值对 * @param key * @returns */ static async has(key: string) { let preferences = await PreferencesUtil.getPreferences(); //获取实例 return await preferences.has(key); }

/** * 删除缓存值 * @param key * @returns */ static deleteSync(key: string) { let preferences = PreferencesUtil.getPreferencesSync(); //获取实例 preferences.deleteSync(key); preferences.flush() //此处一定要flush,要不然不能永久序列化到本地 }

复制代码


/**

* 删除缓存值

* @param key

* @returns

*/

static async delete(key: string) {

let preferences = await PreferencesUtil.getPreferences(); //获取实例

await preferences.delete(key);

return await preferences.flush() //此处一定要 flush,要不然不能永久序列化到本地

}

/**

* 清空缓存的 Preferences 实例中的所有数据

* @returns

*/

static clearSync() {

let preferences = PreferencesUtil.getPreferencesSync(); //获取实例

preferences.clearSync();

preferences.flush() //此处一定要 flush,要不然不能永久序列化到本地

}

/**

* 清除缓存的 Preferences 实例中的所有数据

* @returns

*/

static async clear() {

let preferences = await PreferencesUtil.getPreferences(); //获取实例

await preferences.clear();

return await preferences.flush() //此处一定要 flush,要不然不能永久序列化到本地

}

}

// export default new PreferencesUtil();


用法

1.存储数据


PreferencesUtil.putSync("mykey", "myvalue")
复制代码

2.获取数据


PreferencesUtil.getStringSync("mykey")
复制代码


用户头像

flfljh

关注

还未添加个人签名 2024-10-29 加入

还未添加个人简介

评论

发布
暂无评论
鸿蒙+next+封装轻量级缓存工具PreferencesUtil_flfljh_InfoQ写作社区