首页 > 其他分享 >鸿蒙 ArkTs 持久化轻量级数据简单对数据进行存储

鸿蒙 ArkTs 持久化轻量级数据简单对数据进行存储

时间:2024-12-26 22:55:02浏览次数:6  
标签:pre 初始化 ArkTs code Preferences err 鸿蒙 轻量级 preferences

文章目录

场景

有时候我们需要快速的储存一些标识,比如第一次启动应用的隐私协议弹窗,这个时候我们就需要一直东西,将这个标识存起来

整体逻辑

使用的是 preferences
用户首选项为应用提供Key-Value键值型的数据处理能力,支持应用持久化轻量级数据,并对其修改和查询。
数据存储形式为键值对,键的类型为字符串型,值的存储数据类型包括数字型、字符型、布尔型以及这3种类型的数组类型。

首先,在 UIAbility 中初始化preferences.Preferences对象 → 在pages页面中获取该对象 → 在pages中对对象赋值,读取

具体代码和逻辑

初始化代码
这边建了一个initializePreferences()工具类

  import { preferences } from '@kit.ArkData';

let dataPreferences: preferences.Preferences | null = null;

export async function initializePreferences(context: Context) {
  let options: preferences.Options = { name: 'local_storage' };
  try {
    const prefs = await preferences.getPreferences(context, options);
    dataPreferences = prefs;
    console.info("Succeeded in getting preferences.");
  } catch (err) {
    console.error("Failed to get preferences. code =" + err.code + ", message =" + err.message);
  }
}

export function getPreferences(): preferences.Preferences | null {
  return dataPreferences;
}

然后在大家的 UIAbility中初始化这个Preferences ,在onWindowStageCreate中初始化即可

  onWindowStageCreate(windowStage: window.WindowStage): void {
    // Main window is created, set main page for this ability
    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageCreate');
    // 初始化 Preferences
    initializePreferences(this.context)

    windowStage.loadContent('pages/Index', (err) => {
      if (err.code) {
        hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? '');
        return;
      }
      hilog.info(0x0000, 'testTag', 'Succeeded in loading the content.');
    });
  }

然后在 Pages中
先获取对象

   pre = getPreferences()

这样赋值

this.pre.put("privacy_agreement","1")
this.pre.flush();

········这里要注意·········

this.pre.flush();

这个是让Preferences持久化的,这里是一个容易忽略的地方,有时候明明put了,但是应用重启后,这个值获取不到怎么回事?就是没有将其持久化,持久化的作用是为了应用在退出后,再次进来也还能得到这个值

这样获取value

      this.pre.get('privacy_agreement', 'default').then((data: preferences.ValueType) => {
        console.info("Succeeded in getting value of 'startup'. Data: " + data);
      }).catch((err: BusinessError) => {
        console.error("Failed to get value of 'startup'. code =" + err.code + ", message =" + err.message);
      })

注意

privacy_agreement 这个值就是key,读和写都得一样,local_storage local_storage 是用于标识存储的名称。这个名称实际上是一个标签或键,用来区分不同的 Preferences 存储实例。

官方文档

标签:pre,初始化,ArkTs,code,Preferences,err,鸿蒙,轻量级,preferences
From: https://blog.csdn.net/weixin_43325149/article/details/144747594

相关文章

  • WatchAlert - 一款轻量级云原生多数据源监控告警引擎(运维研发必备能力)
    概述在现代IT环境中,监控和告警是确保系统稳定性和可靠性的关键环节。然而,随着业务规模的扩大和数据源的多样化,传统的单一数据源告警系统已经无法满足复杂的需求。为了解决这一问题,我开发了一个开源的多数据源告警引擎——WatchAlert,它能够集成多种数据源,提供灵活的告警策略配置......
  • 探索鸿蒙的蓝牙A2DP与访问API:从学习到实现的开发之旅
    完成了鸿蒙系统中一系列的学习与实际应用开发后,我的开发旅程逐渐走向了更复杂的领域。这次,我决定挑战蓝牙相关功能。蓝牙技术是现代设备互联的核心之一,而鸿蒙系统提供的BluetoothA2DPAPI和BluetoothAccessAPI为开发者带来了便捷的接口。不管三七二十一了,咱们直接上API13版本,然......
  • 华为鸿蒙HarmonyOS Next基础开发教程
    华为鸿蒙HarmonyOSNext基础开发教程1.开发环境准备安装DevEcoStudioDevEcoStudio是华为为HarmonyOS应用开发提供的集成开发环境(IDE)。您可以从华为的官方网站下载并安装DevEcoStudio。配置开发环境确保您的计算机上安装了以下软件:JDK:Java开发工具包,用于支持Java语言开......
  • 快来“一起鸿蒙吧”!体验更出色,智慧再升级
    当鸿蒙遇上脱口秀,会擦出什么样的火花?“一起鸿蒙吧”给出了答案。华为邀请了呼兰、贾耗、漫才兄弟、庞博、小鹿等艺人,用脱口秀独有的风趣幽默方式,将原生鸿蒙带入观众的视野。从真实的应用场景出发,脱口秀演员们巧妙展示了原生鸿蒙的创新功能——从跨设备协作到隐私保护,从流畅体验到......
  • ssm毕设团购轻量级app程序+论文
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容团购轻量级APP项目说明一、研究背景随着移动互联网的飞速发展,电子商务已经成为人们日常生活中不可或缺的一部分。团购模式在电商领域中脱颖而出,它通过集合消......
  • 【流量分析】轻量级内网穿透工具natpass加密流量分析
    一、概述natpass是一款轻量级内网穿透工具,支持shell管理、VNC远程桌面等功能,支持使用TCP、TLS等多种协议进行通信,同时可以自定义预共享密钥确保两端通信安全,并且还支持多种操作系统,可以进行跨平台操作。【图1】控制端Web页面二、部署方式根据部署的位置不同,分为服务端、控制......
  • 深入浅出ArkTS开发指南之底部导航和页面跳转
    大家好,我是全栈的峰哥,独立开发者,相关问题可以加v:2588234,联系我一起沟通今天带来的知识是Navigation组件的使用,同时通过属性:toolbarConfiguration的配置,配合router.pushUrl的运用,实现底部导航切换到首页、会员中心,同时支持多个Navigation,并跳转到NavDestination子页面中。定义......
  • 鸿蒙Next状态管理V2-Local装饰器总结
    一、引言在鸿蒙Next的开发中,状态管理是构建高效、响应式应用的关键部分。@Local装饰器作为状态管理V2中的重要特性,为开发者提供了一种有效的方式来管理组件内部状态。本文将对@Local装饰器进行全面总结,包括其功能、使用方法、与@State装饰器的对比以及常见问题的解决方法等。二......
  • 鸿蒙元服务审核上的一些思考
    最近,我们应华为团队的邀请,开发或适配了一些元服务。然而,在上架时却遭到拒绝,理由是“您的元服务与您账号下提交的多个元服务功能内容相似,提交类似的元服务会使用户造成混乱,影响用户体验。不符合华为应用市场《元服务审核指南》第3.4项”。我不禁思考,元服务确实是个好东西,相较于......
  • 鸿蒙学习记录之http网络请求
    权限申请路径为:entry->src->main->module.json5"requestPermissions":[{"name":"ohos.permission.INTERNET",}]基本使用//1.引入包名import{http}from'@kit.NetworkKit';//2.创建一个Htt......