鸿蒙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)
    }
  }
}
目录
相关文章
|
2月前
|
JavaScript 前端开发 IDE
HarmonyOS应用开发尝鲜篇:初识HarmonyOS
HarmonyOS应用开发尝鲜篇:初识HarmonyOS
|
2月前
|
编译器
【鸿蒙4.0】harmonyos Day 01
harmonyos 原生编译器Dev Ecostudio创建新工程出现bug. harmonyos4.0入门
135 7
|
2月前
|
数据安全/隐私保护
【鸿蒙4.0】harmonyos Day 03
ArkUI组件-Text、ArkUI组件-TextInput:文本输入框简介及用法
105 1
|
8月前
|
安全 前端开发 Android开发
鸿蒙开发|鸿蒙系统的介绍(为什么要学习鸿蒙开发|鸿蒙系统的官方定义|鸿蒙和安卓、ios的对比)
鸿蒙开发学习是一项探索性的工作,旨在开发一个全场景分布式操作系统,覆盖所有设备,让消费者能够更方便、更直观地使用各种设备。
367 6
鸿蒙开发|鸿蒙系统的介绍(为什么要学习鸿蒙开发|鸿蒙系统的官方定义|鸿蒙和安卓、ios的对比)
|
2月前
|
IDE 安全 开发工具
初学鸿蒙系统HarmonyOS第一课
初学鸿蒙系统HarmonyOS第一课
90 0
|
8月前
|
前端开发 JavaScript Java
华为HarmonyOS鸿蒙应用开发初体验
HarmonyOS鸿蒙系统出来好几年了,开发鸿蒙应用和咱平时的前端开发到底有什么差别呢,下面就从一个前端开发的视角带领大家体验一下HarmonyOS开发。
136 0
|
11月前
|
安全 Java 物联网
了解 HarmonyOS
本章提供了 HarmonyOS 的基础知识,包括定义、发展历程、特点、架构和与其他操作系统的比较。这为后续的开发工作打下了坚实的基础。
205 0
了解 HarmonyOS
|
10月前
HarmonyOS的三大技术特点
HarmonyOS的三大技术特点
112 0
|
JavaScript 小程序 索引
鸿蒙开发
初步上手感觉鸿蒙的语法和小程序相似,又结合了vue的语法糖,加上可以使用ES6的语法,更加丝滑
鸿蒙开发
|
XML 存储 JSON
『HarmonyOS』探索HarmonyOS应用
App就是应用,指运行在设备的操作系统之上,为用户提供特定服务的程序,简称“应用”。 在HarmonyOS上运行的应用,有两种形态: • 传统方式的需要安装的应用。 • 提供特定功能,免安装的应用(即原子化服务)。 原子化服务是HarmonyOS提供的一种面向未来的服务提供方式,是有独立入口的(用户可通过点击方式直接触发)、免安装的(无需显式安装,由系统程序框架后台安装后即可使用)、可为用户提供一个或多个便捷服务的用户应用程序形态。 例如:某传统方式的需要安装的购物应用A,在按照原子化服务理念调整设计后,成为由“商品浏览”“购物车”“支付”等多个便捷服务组成的、可以免安装的购物原子化服务A*
297 0