鸿蒙PreferenceUtil

简介: 鸿蒙PreferenceUtil


import dataPreferences from '@ohos.data.preferences'
import { TextUtil } from './TextUtil'
import {logger} from './Logger'
let preference: dataPreferences.Preferences | null
 
/**
 * 使用方式1:PreferenceUtil.writeBoolean(PreferenceKey.SHOW_PERMISSION_DESCRIPTION).then((userInfo: UserLoginDTO) => {
 Logger.d('userId:'+userInfo.userId)
 })
 *使用方式2:let show = await PreferenceUtil.readBoolean(SPreferenceKey.HOW_PERMISSION_DESCRIPTION)
 *         Logger.d('show:'+show)
 */
export class PreferenceUtil {
  private static readonly TAG: string = 'PreferenceUtil';
  static readonly PREFERENCE_NAME: string = 'my_preference'
 
  static initPreference(preferences: dataPreferences.Preferences) {
    preference = preferences;
  }
  static async writeString(key: string, value?: string) {
    try {
      if (preference != null) {
        await preference.put(key, value)
      }
    } catch (e) {
      logger.error(PreferenceUtil.TAG, 'Failed to write value, cause:' + e)
    }
    if (preference != null) {
      await preference.flush()
    }
  }
 
  static async readString(key: string, defaultValue?: string) {
    let value: string = "";
    try {
      if (preference != null) {
        value = await preference.get(key, defaultValue).then()
      }
    } catch (e) {
      logger.error(PreferenceUtil.TAG, 'Failed to read value, cause:' + e)
    }
    return value
  }
 
  static async writeArrayString(key: string, value?: Array<string>) {
    try {
      if (preference != null) {
        await preference.put(key, value)
      }
    } catch (e) {
      logger.error(PreferenceUtil.TAG, 'Failed to write value, cause:' + e)
    }
    if (preference != null) {
      await preference.flush()
    }
  }
 
  static async readArrayString(key: string, defaultValue?: Array<string>) {
    let value: Array<string>| null = null;
    try {
      if (preference != null) {
        value = await preference.get(key, defaultValue).then()
      }
    } catch (e) {
      logger.error(PreferenceUtil.TAG, 'Failed to read value, cause:' + e)
    }
    return value
  }
 
  static async writeNumber(key: string, value?: number) {
    try {
      if (preference != null) {
        await preference.put(key, value)
      }
    } catch (e) {
      logger.error(PreferenceUtil.TAG, 'Failed to write value, cause:' + e)
    }
    if (preference != null) {
      await preference.flush()
    }
  }
 
  static async readNumber(key: string, defaultValue?: number) {
    let value: number|undefined = undefined;
    try {
      if (preference != null) {
        value = await preference.get(key, defaultValue).then()
      }
    } catch (e) {
      logger.error(PreferenceUtil.TAG, 'Failed to read value, cause:' + e)
    }
    return value
  }
 
  static async writeArrayNumber(key: string, value?: Array<number>) {
    try {
      if (preference != null) {
        await preference.put(key, value)
      }
    } catch (e) {
      logger.error(PreferenceUtil.TAG, 'Failed to write value, cause:' + e)
    }
    if (preference != null) {
      await preference.flush()
    }
  }
 
  static async readArrayNumber(key: string, defaultValue?: Array<number>) {
    let value: Array<number> | null = null;
    try {
      if (preference != null) {
        value = await preference.get(key, defaultValue).then()
      }
    } catch (e) {
      logger.error(PreferenceUtil.TAG, 'Failed to read value, cause:' + e)
    }
    return value
  }
 
  static async writeBoolean(key: string, value?: boolean) {
    try {
      if (preference != null) {
        await preference.put(key, value)
      }
    } catch (e) {
      logger.error(PreferenceUtil.TAG, 'Failed to write value, cause:' + e)
    }
    if (preference != null) {
      await preference.flush()
    }
  }
 
  static async readBoolean(key: string, defaultValue?: boolean) {
    let value: boolean = false;
    try {
      if (preference != null) {
        value = await preference.get(key, defaultValue).then()
      }
    } catch (e) {
      logger.error(PreferenceUtil.TAG, 'Failed to read value, cause:' + e)
    }
    return value
  }
 
  static async writeArrayBoolean(key: string, value?: Array<boolean>) {
    try {
      if (preference != null) {
        await preference.put(key, value)
      }
    } catch (e) {
      logger.error(PreferenceUtil.TAG, 'Failed to write value, cause:' + e)
    }
    if (preference != null) {
      await preference.flush()
    }
  }
 
  static async readArrayBoolean(key: string, defaultValue?: Array<boolean>) {
    let value: Array<boolean> | null = null
    try {
      if (preference != null) {
        value = await preference.get(key, defaultValue).then()
      }
    } catch (e) {
      logger.error(PreferenceUtil.TAG, 'Failed to read value, cause:' + e)
    }
    return value
  }
 
  static async writeModel<T>(key: string, value?: T) {
    try {
      if (preference != null) {
        await preference.put(key, JSON.stringify(value))
      }
    } catch (e) {
      logger.error(PreferenceUtil.TAG, 'Failed to write value, cause:' + e)
    }
    if (preference != null) {
      await preference.flush()
    }
  }
 
  static async readModel<T>(key: string) {
    let value: string = ""
    try {
      if (preference != null) {
        value = await preference.get(key, '').then()
      }
    } catch (e) {
      logger.error(PreferenceUtil.TAG, 'Failed to read value, cause:' + e)
    }
    if (TextUtil.isEmpty(value)) {
      return null
    } else {
      return JSON.parse(value) as T
    }
  }
 
  static async delete(key: string) {
    try {
      if (preference != null) {
        await preference.delete(key).then()
      }
    } catch (e) {
      logger.error(PreferenceUtil.TAG, 'Failed to delete, cause:' + e)
    }
  }
 
  static async clear() {
    try {
      if (preference != null) {
        await preference.clear().then()
      }
    } catch (e) {
      logger.error(PreferenceUtil.TAG, 'Failed to clear, cause:' + e)
    }
  }
 
  static async flush() {
    try {
      if (preference != null) {
        await preference.flush().then()
      }
    } catch (e) {
      logger.error(PreferenceUtil.TAG, 'Failed to flush, cause:' + e)
    }
  }
}
目录
相关文章
|
机器学习/深度学习 存储 算法
时序数据特征工程浅析
内容摘要特征工程是指将原始数据标记处理为价值密度更高,更容易解释目标问题的工程化过程,在面向大量原始采集的数据集统计分析,尤其是对于高通量持续采集、且价值密度较低的时序数据更是如此。时序数据特征工程则是指利用有效方法,将原始时序数据转化为带有含义分类标签的序列数据片段或特征数值,例如,我们可以将指定时间窗口序列数据标识为特定异常关联数据,并保留平均、最大、最小值作为该序列的特征值。这样我们就可以围
4015 0
时序数据特征工程浅析
|
算法 Unix 调度
【OSTEP】调度: 多级反馈队列 (MLFQ) | 优先级提升 | 饥饿问题 | 愚弄调度问题 | MLFQ 调优
【OSTEP】调度: 多级反馈队列 (MLFQ) | 优先级提升 | 饥饿问题 | 愚弄调度问题 | MLFQ 调优
841 0
|
Android开发
鸿蒙开发:自定义一个简单的标题栏
本身就是一个很简单的标题栏组件,没有什么过多的技术含量,有一点需要注意,当使用沉浸式的时候,注意标题栏的位置,需要避让状态栏。
248 5
鸿蒙开发:自定义一个简单的标题栏
|
5月前
|
移动开发 开发工具 容器
【HarmonyOS NEXT】鸿蒙使用ScanKit实现自定义扫码 (一)之业务流程和扫码
1)鸿蒙提供的ScanKit具备以下五种能力: 1. 扫码直达 2. 自定义扫码,图像识码 (自定义扫码需要这两种能力组合在一起,所以我分类在一起) 3. 码图生成 4. 系统提供的默认界面扫码
179 0
|
算法 数据安全/隐私保护 异构计算
基于FPGA的16QAM基带通信系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR
本项目基于FPGA实现16QAM调制解调通信系统,使用Verilog语言编写,包括信道模块、误码率统计模块。通过设置不同SNR值(如8dB、12dB、16dB),仿真测试系统的误码性能。项目提供了完整的RTL结构图及操作视频,便于理解和操作。核心程序实现了信号的生成、调制、信道传输、解调及误码统计等功能。
263 3
|
11月前
|
人工智能 数据可视化 API
自学记录鸿蒙API 13:Calendar Kit日历功能从学习到实践
本文介绍了使用HarmonyOS的Calendar Kit开发日程管理应用的过程。通过API 13版本,不仅实现了创建、查询、更新和删除日程等基础功能,还深入探索了权限请求、日历配置、事件添加及查询筛选等功能。实战项目中,开发了一个智能日程管理工具,具备可视化管理、模糊查询和智能提醒等特性。最终,作者总结了模块化开发的优势,并展望了未来加入语音助手和AI推荐功能的计划。
785 1
|
人工智能 安全 前端开发
我写个HarmonyOS Next版本的微信聊天01
我写个HarmonyOS Next版本的微信聊天01
267 1
我写个HarmonyOS Next版本的微信聊天01
|
数据采集 人工智能 前端开发
我写个HarmonyOS Next版本的微信聊天03-完结篇
我写个HarmonyOS Next版本的微信聊天03-完结篇
240 0
我写个HarmonyOS Next版本的微信聊天03-完结篇
|
Java 测试技术 数据安全/隐私保护
📖Java零基础-while循环语句的深度解析
【10月更文挑战第6天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
396 1
|
IDE JavaScript 开发工具
DevEco Studio 3.1IDE环境配置(HarmonyOS 3.1)
DevEco Studio 3.1IDE环境配置(HarmonyOS 3.1)
321 1

热门文章

最新文章