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

乐清网站改版东莞百度网站排名优化

乐清网站改版,东莞百度网站排名优化,做盒饭的网站,东莞做网站首选企业铭注意:博主有个鸿蒙专栏,里面从上到下有关于鸿蒙next的教学文档,大家感兴趣可以学习下 如果大家觉得博主文章写的好的话,可以点下关注,博主会一直更新鸿蒙next相关知识 专栏地址: https://blog.csdn.net/qq_56760790/…

注意:博主有个鸿蒙专栏,里面从上到下有关于鸿蒙next的教学文档,大家感兴趣可以学习下

如果大家觉得博主文章写的好的话,可以点下关注,博主会一直更新鸿蒙next相关知识

专栏地址: https://blog.csdn.net/qq_56760790/category_12794123.html

目录

1. 应用数据持久化

2. 应用数据持久化-用户首选项

2.1 概述

2.2 约束限制

2.3 常用方法

2.3.1 封装用户首选项工具类

2.3.2 初始化用户首选项

2.3.3 使用用户首选项

4. 学习地址


1. 应用数据持久化

应用数据持久化,是指应用将内存中的数据通过文件或数据库的形式保存到设备上。内存中的数据形态通常是任意的数据结构或数据对象,存储介质上的数据形态可能是文本、数据库、二进制文件等。

HarmonyOS标准系统支持典型的存储数据形态,包括用户首选项、键值型数据库、关系型数据库。

  • 用户首选项(Preferences):通常用于保存应用的配置信息。数据通过文本的形式保存在设备中,应用使用过程中会将文本中的数据全量加载到内存中,所以访问速度快、效率高,但不适合需要存储大量数据的场景。
  • 键值型数据库(KV-Store):一种非关系型数据库,其数据以“键值”对的形式进行组织、索引和存储,其中“键”作为唯一标识符。适合很少数据关系和业务关系的业务数据存储,同时因其在分布式场景中降低了解决数据库版本兼容问题的复杂度,和数据同步过程中冲突解决的复杂度而被广泛使用。相比于关系型数据库,更容易做到跨设备跨版本兼容。
  • 关系型数据库(RelationalStore):一种关系型数据库,以行和列的形式存储数据,广泛用于应用中的关系型数据的处理,包括一系列的增、删、改、查等接口,开发者也可以运行自己定义的SQL语句来满足复杂业务场景的需要。

2. 应用数据持久化-用户首选项

2.1 概述

用户首选项为应用提供Key-Value键值型的数据处理能力,支持应用持久化轻量级数据,并对其修改和查询。当用户希望有一个全局唯一存储的地方,可以采用用户首选项来进行存储。Preferences会将该数据缓存在内存中,当用户读取的时候,能够快速从内存中获取数据,当需要持久化时可以使用flush接口将内存中的数据写入持久化文件中。Preferences会随着存放的数据量越多而导致应用占用的内存越大,因此,Preferences不适合存放过多的数据,也不支持通过配置加密,适用的场景一般为应用保存用户的个性化设置(字体大小,是否开启夜间模式)等。

2.2 约束限制

  • 首选项无法保证进程并发安全,会有文件损坏和数据丢失的风险,不支持在多进程场景下使用。
  • Key键为string类型,要求非空且长度不超过1024个字节。
  • 如果Value值为string类型,请使用UTF-8编码格式,可以为空,不为空时长度不超过16 * 1024 * 1024个字节。
  • 内存会随着存储数据量的增大而增大,所以存储的数据量应该是轻量级的,建议存储的数据不超过一万条,否则会在内存方面产生较大的开销。

2.3 常用方法

参考华为官方文档:文档中心

注意:记得用真机或者模拟器运行

2.3.1 封装用户首选项工具类

注意:PreferencesUtil文件结尾是ts不是ets

import dataPreferences from '@ohos.data.preferences'
import hilog from '@ohos.hilog';/*** 用户首选项(存储简单数据)*/
export default class PreferencesUtil {// 用户首选项名称private static preferenceName: string = 'myStore'/*** 创建* @param context*/static createPreferences(context) {globalThis.getFontPreferences = (() => {let preferences: Promise<dataPreferences.Preferences> =dataPreferences.getPreferences(context, this.preferenceName);return preferences;});}/*** 存放数据* @param value*/static savePreferencesValue(key: string, value: string) {globalThis.getFontPreferences().then((preferences) => {preferences.has(key).then(async (isExist) => {if (!isExist) {await preferences.put(key, value);preferences.flush();}}).catch((err) => {hilog.info(0xFF00, 'preferencesTag', '%{public}s', 'save PreferencesValue fail');});}).catch((err) => {hilog.info(0xFF00, 'preferencesTag', '%{public}s', 'save PreferencesValue fail');});}/*** 获取数据* @returns*/static async getPreferencesValue(key: string) {let value: string = '';const preferences = await globalThis.getFontPreferences();value = await preferences.get(key, value);return value;}/*** 删除数据*/static async deletePreferencesValue(key: string) {const preferences: dataPreferences.Preferences = await globalThis.getFontPreferences();let deleteValue = preferences.delete(key);deleteValue.then(() => {hilog.info(0xFF00, 'preferencesTag', '%{public}s', 'delete PreferencesValue success');}).catch((err) => {hilog.info(0xFF00, 'preferencesTag', '%{public}s', 'delete PreferencesValue fail');});}
}

2.3.2 初始化用户首选项

在EntryAbility文件中初始化用户首选项

  onWindowStageCreate(windowStage: window.WindowStage): void {// 初始化用户首选项PreferencesUtil.createPreferences(this.context);// Main window is created, set main page for this abilityhilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageCreate');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.');});}

2.3.3 使用用户首选项

注意:用户首选项存的值全局都可以获取到

import PreferencesUtil from '../utils/PreferencesUtil'@Entry@Componentstruct Index {build() {Column() {Text('存值').onClick(() => {PreferencesUtil.savePreferencesValue('username', '东林')console.log('preferences save success')}).margin({bottom:50})Divider()Text('点我获取preferences值').onClick(async () => {const username = await PreferencesUtil.getPreferencesValue('username')console.log('preferences username:' + JSON.stringify(username))}).margin({bottom:50})Divider()Text('删除').onClick(async () => {await PreferencesUtil.deletePreferencesValue('username')console.log('preferences remove success')})}.height('100%').width('100%')}}

4. 学习地址

全网首发鸿蒙NEXT星河版零基础入门到实战,2024年最新版,企业级开发!视频陆续更新中!_哔哩哔哩_bilibili

http://www.mmbaike.com/news/97911.html

相关文章:

  • 网站免费的全国新闻媒体发稿平台
  • 上海网站推广平台营销助手
  • 网站宣传与推广网站seo推广优化
  • 企业网站怎么做才能留住客户网络营销策划包括哪些内容
  • 电脑版网页版登录入口上海百度seo
  • 玉林做绿化苗木网站的是哪个单位百度软件下载中心官方网站
  • 目前长沙疫情最新情况重庆seo1
  • 购物网站 wordpress 英文模板seo搜索引擎优化简历
  • 建立网站赚钱吗2023新闻摘抄大全
  • qq头像网站源码企业网站有哪些
  • 做淘宝要用的网站吗国际新闻头条
  • 十个最好的网站优化网站排名方法教程
  • 品牌设计公司简介白帽seo是什么
  • seo网站推广优化费用企业百度推广
  • ctb自己做网站宁波seo优化流程
  • 找能做网站的seo优化系统
  • bootstrap网站模板女排联赛排名
  • 公司的网站建设做什么费用网络推广的方法包括
  • 为什么网站突然打不开网站优化平台
  • 做外贸好还是跨境电商好结构优化设计
  • 网站型跟商城型网络推广合作协议
  • org网站开发seo搜索引擎优化知乎
  • 网站开发合同 附件百度知道电脑版网页入口
  • 用PS做网站搜索框seo网站排名的软件
  • 如何重新做公司网站电脑网络优化软件
  • 131美女做爰视频网站免费友链平台
  • 网站欢迎页面模板下载网站分享
  • wordpress同步到报价号成品网站seo
  • 网站设计 企业 济南搜索引擎营销简称seo
  • wordpress整站加密淘宝客推广