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

鸿蒙HarmonyOS之使用preferences首选项保存获取数据

一、工具类:PreferencesUtil.ets

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

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

import { preferences } from '@kit.ArkData';
import { GlobalContext } from './GlobalContext';
const PREFERENCES_NAME = 'currPreferences';
const KEY_APP_LOGIN_TOKEN = 'loginToken';

/**
 * 首选项-工具类 保存应用数据
 */
export class PreferencesUtil {

  createPreferences(context: Context) {
    let currPreferences: Function = (() => {
      return preferences.getPreferences(context, {name: PREFERENCES_NAME});
    })
    GlobalContext.getContext().setObject('getPreferences',currPreferences);
  }

  /**
   * 保存Token
   * @param token
   */
  saveLoginToken(token: string){
    let currPreferences: Function = GlobalContext.getContext().getObject('getPreferences') as Function;
    currPreferences().then((preferences: preferences.Preferences) => {
      preferences.put(KEY_APP_LOGIN_TOKEN, token);
      preferences.flush();
    });
  }

  /**
   * 获取Token
   * @returns
   */
  async getLoginToken(){
    let currPreferences: Function = GlobalContext.getContext().getObject('getPreferences') as Function;
    let token: string = await (await currPreferences()).get(KEY_APP_LOGIN_TOKEN, '');
    return token;
  }
}

export default new PreferencesUtil();

二、使用

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

export default class EntryAbility extends UIAbility {
  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) {
    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');

	//添加以下方法调用代码
    GlobalContext.getContext().setObject('abilityWant', want);
    PreferencesUtil.createPreferences(this.context);
  }
  ...
  }

2、保存Token值

直接调用工具类的方法

PreferencesUtil.saveLoginToken('xxx');

3、获取保存的Token值

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

三、完成,Nice!

如有错误,欢迎指正!


http://www.kler.cn/news/285084.html

相关文章:

  • 1、Java简介+DOS命令+java的编译运行(字节码/机器码、JRE/JVM/JDK的区别)+一个简单的Java程序
  • Linux 数据结构 树知识
  • shell小白学习记录
  • 如何将线程绑定到特定的CPU核
  • HarmonyOS开发实战( Beta5版)减小应用包大小
  • 【2024】Datawhale X 李宏毅苹果书 AI夏令营 Task2
  • Linux(CentOS 7)
  • element的el-date-picker组件实现只显示年月日时分,不显示秒
  • 2024最新VMware17安装Windows10详细记录
  • SQL进阶技巧:如何查询最近一笔有效订单? | 近距离有效匹配问题
  • 微信小程序 === 组件样式
  • WHAT - 一个 IP 地址与地理信息的关联
  • JAVA中如何自定义注解
  • Docker compose 安装 ELK
  • 【电力电子】单相并网逆变器
  • 在Vue2中使用WebSocket
  • C语言基础(二十一)
  • CSS3换装达人原理
  • 【Datawhale AI夏令营】从零上手CV竞赛Task3
  • 惠中科技PV-Wiper全自动光伏清洁系统,根治污染难题
  • 2024最详细Maven配置教程
  • Java算法之归并排序(Merge Sort)
  • 【Godot4.3】MarkDown解析和生成类 - MDdoc
  • 仿华为车机功能之--修改Launcher3,实现横向滑动桌面空白处切换壁纸
  • 在Ubuntu 20.04上安装MySQL的方法
  • 神经网络搭建实战与Sequential的使用
  • 南京观海微电子----VCC、 VDD、VSS、VEE 电压符号解释
  • <Rust>egui学习之小部件(八):如何在窗口中添加滑动条slider部件?
  • Vue.js入门系列(十九):深入理解和应用组件自定义事件
  • C++宏展开