当前位置: 首页 > news >正文

正规网站建设推荐科技政策要聚焦自立自强

正规网站建设推荐,科技政策要聚焦自立自强,孝感新闻门户网站,网站要有可留言功能 怎么做【HarmonyOS Next】数据本地存储#xff1a;ohos.data.preferences 在开发现代应用程序时#xff0c;数据存储是一个至关重要的过程。应用程序为了保持某些用户设置、应用状态以及其他小量数据信息通常需要一个可靠的本地存储解决方案。在 HarmonyOS Next 环境下#xff0c…【HarmonyOS Next】数据本地存储ohos.data.preferences 在开发现代应用程序时数据存储是一个至关重要的过程。应用程序为了保持某些用户设置、应用状态以及其他小量数据信息通常需要一个可靠的本地存储解决方案。在 HarmonyOS Next 环境下ohos.data.preferences 模块为我们提供了一个轻量级且高效的键值对存储方式。本文将深入探讨如何利用该模块进行数据的本地存储并通过一个实际封装的类举例说明其实现方式。 什么是 ohos.data.preferences ohos.data.preferences 是 HarmonyOS 提供的轻量级本地存储解决方案适用于存储简单的键值对。例如保存用户的设置或者应用的配置信息。这一模块提供了一套简便的接口便于开发者读写数据持久化存储。 核心功能 轻量级存储非常适用于存储小量和简单的数据。易于使用通过简单的接口即可实现对数据的增删改查。持久化特性数据保存在本地存储应用重启后仍然可以访问。 ohos.data.preferences 的基本用法 要使用 Preferences 模块进行数据存储以下是基本步骤 获取 Preferences 实例 使用 dataPreferences.getPreferences(context, preferenceName) 方法来获取或创建一个 Preferences 实例。 存储数据 使用 putString, putInt, putBoolean 等方法来存储数据。最后必须调用 flush() 方法让数据持久化到存储系统中。 读取数据 使用 getString, getInt, getBoolean 等方法来读取存储在 Preferences 中的数据。 删除数据 用 delete(key) 删除具体键的值用 clear() 删除所有数据。 示例代码实现 import preferences from ohos.data.preferences;// 获取 Preferences const context ...; // 假设 context 可用 const prefName userPreferences; const preferencesHelper preferences.getPreferences(context, prefName);// 写入数据 preferencesHelper.putString(theme, dark); preferencesHelper.flush();// 读取数据 const theme preferencesHelper.getString(theme, light);// 删除数据 preferencesHelper.delete(theme); preferencesHelper.flush();// 清空数据 preferencesHelper.clear(); preferencesHelper.flush();封装 Preferences 进行简化操作 在更复杂的项目中直接调用这些方法可能并不够优雅和简洁。为此我们创建了 PreferencesUtils 类对 ohos.data.preferences 进行了一层封装统一了对数据的操作方法。 PreferencesUtils 类的实现详解 类的基本结构 export class PreferencesUtils {private preferencesName: string;private keyPreferences: string;constructor(name: string PREFERENCES_NAME,keyP: string KEY_PREFERENCES) {this.preferencesName name;this.keyPreferences keyP;} }成员变量preferencesName 和 keyPreferences 分别用于存储的文件名和全局引用。构造函数允许通过参数自定义这两个参数提高了工具类的灵活性。 创建和获取 Preferences 实例 async createPreferences(context: Context): PromisedataPreferences.Preferences | null {try {const preferences await dataPreferences.getPreferences(context, this.preferencesName);GlobalContext.getContext().setObject(this.keyPreferences, preferences);return preferences;} catch (error) {console.error(Error creating preferences:, error);return null;} }async getPreferences(): PromisedataPreferences.Preferences | null {try {return GlobalContext.getContext().getObject(KEY_PREFERENCES);} catch (error) {console.error(Error getting preferences:, error);return null;} }功能实现通过 createPreferences 方法创建 Preferences并保存在全局上下文中getPreferences 方法用于获取实例确保在需要时能够顺利地进行数据操作。异常处理使用 try/catch 结构确保错误被捕获并记录。 数据的基本操作 获取数据 async get(key: string, def?: ValueType): PromiseValueType | undefined {try {const preferences await this.getPreferences();return preferences ? await preferences.get(key, def) : def;} catch (error) {console.error(Error getting key ${key}:, error);return def;} }存储数据 async put(key: string, value: ValueType): Promisevoid {try {const preferences await this.getPreferences();if (preferences) {await preferences.put(key, value);await preferences.flush();}} catch (error) {console.error(Error putting key ${key}:, error);} }删除数据和清空数据 async delete(key: string): Promisevoid {try {const preferences await this.getPreferences();if (preferences) {await preferences.delete(key);await preferences.flush();}} catch (error) {console.error(Error deleting key ${key}:, error);} }async clear(): Promisevoid {try {const preferences await this.getPreferences();if (preferences) {await preferences.clear();await preferences.flush();}} catch (error) {console.error(Error clearing preferences:, error);} }一致的接口通过 get, put, delete, 和 clear 方法它简化了对具体存储操作的调用。数据持久化每次数据操作后调用 flush 确保数据立即写入存储避免数据丢失。全面的错误管理在每个方法的实现中均加入了错误捕获和日志记录以确保运行时出现问题时能够及时反应和处理。 应用示例 下面展示如何在应用中使用 PreferencesUtils 类来管理本地存储的数据 import PreferencesUtils from ./PreferencesUtils;async function initAppPreferences(context: Context) {await PreferencesUtils.createPreferences(context); }async function updateUserPreferences() {await PreferencesUtils.put(language, English);const language await PreferencesUtils.get(language, en);console.log(Current language preference: ${language}); }// 初始化并使用 initAppPreferences(appContext).then(updateUserPreferences);完整的封装 以下是一个可以直接使用的封装 import GlobalContext from ./GlobalContext import dataPreferences from ohos.data.preferencesconst PREFERENCES_NAME yiPreferences const KEY_PREFERENCES preferences type ValueType number | string | boolean | Arraynumber | Arraystring | Arrayboolean | Uint8Array | object | bigintexport class PreferencesUtils{// preferences的文件名private preferencesName: string PREFERENCES_NAME// 用于获取preferences实例的key值保存到单例中private keyPreferences: string KEY_PREFERENCESconstructor(name: string PREFERENCES_NAME, keyP: string KEY_PREFERENCES) {this.preferencesName namethis.keyPreferences keyP}createPreferences(context: Context): PromisedataPreferences.Preferences {let preferences dataPreferences.getPreferences(context, this.preferencesName)GlobalContext.getContext().setObject(this.keyPreferences, preferences)return preferences}getPreferences(): PromisedataPreferences.Preferences {return GlobalContext.getContext().getObject(KEY_PREFERENCES) as PromisedataPreferences.Preferences}async get(key: string, def?: ValueType): PromiseValueType {return (await this.getPreferences()).get(key, def)}async getAll(): PromiseObject {let preferences await this.getPreferences()return preferences.getAll()}async put(key: string, value: ValueType): Promisevoid {let promise await this.getPreferences().then(async (p) {await p.put(key, value)await p.flush();}).catch((err: Error){console.log(String(err))})return promise}async delete(key: string): Promisevoid {return (await this.getPreferences()).delete(key).finally(async () {(await this.getPreferences()).flush()})}async clear(): Promisevoid {return (await this.getPreferences()).clear().finally(async () {(await this.getPreferences()).flush()})}}export default new PreferencesUtils()
http://www.w-s-a.com/news/113640/

相关文章:

  • 台州专业做网站网站可以个人做吗
  • 个人logo在线生成免费乐陵德州seo公司
  • 网站回答问题app怎么做专业定制网红柴火灶
  • 网站做的最好的公司行业网址大全
  • 内网怎么做网站服务器seo统计
  • 丽水市企业网站建设 微信营销 影视拍摄计算机专业吃香吗
  • 龙岗做网站公司哪家好找到做网站的公司
  • 网站图片alt属性wordpress 自定义栏目 调用
  • 怎样建网站最快广州网站建设工程
  • iis7 网站404错误信息12306网站很难做吗
  • 网站建设600元包公司设计图片大全
  • 网站建设费用怎么做分录做校园网站代码
  • 网站改版做重定向福州网站建设思企
  • 网站建设全流程企业形象网站开发业务范畴
  • wordpress无法查看站点西安优秀高端网站建设服务商
  • 固始网站制作熟悉免费的网络营销方式
  • 做网站到a5卖站赚钱搜索引擎优化代理
  • 沈阳网站建设包括win10优化
  • 做百度手机网站点击软网站seo优化徐州百度网络
  • 徐州专业网站制作标志设计作业
  • 自己可以做网站空间吗海天建设集团有限公司网站
  • 教学督导网站建设报告aspcms网站图片不显示
  • 网站开发公司成本是什么门户网站宣传方案
  • 上海 企业网站建设网站怎么开通微信支付
  • 饮料网站建设wordpress主题猫
  • 网站建设需要编码不有没有专门的网站做品牌授权的
  • 做爰在线网站免费空间列表
  • 网站外链建设工作总结郑州网站建设扌汉狮网络
  • 建设企业网站的需要多长时间网站使用说明书模板
  • 建网站首页图片哪里找263企业邮箱网页版登录