首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

HarmonyOS(39) Preferences 入门指南

  • 25-02-22 01:00
  • 2344
  • 7586
blog.csdn.net

Preferences

  • Preferences
  • 应用实例
    • 初始化preferences
    • 保存并持久化数据
    • 获取数据
  • 参考资料

Preferences

Android开发程序员对此应该很熟悉,HarmonyOS里的Preferences跟Android里的SharePreference差不多,应用提供Key-Value键值型的数据处理能力,支持应用持久化轻量级数据,并对其修改和查询。当用户希望有一个全局唯一存储的地方,可以采用用户首选项来进行存储。Preferences会将该数据缓存在内存中,当用户读取的时候,能够快速从内存中获取数据,当需要持久化时可以使用flush接口将内存中的数据写入持久化文件中。Preferences会随着存放的数据量越多而导致应用占用的内存越大,因此,Preferences不适合存放过多的数据,建议存储的数据不超过一万条,否则会在内存方面产生较大的开销。适用的场景一般为应用保存用户的个性化设置(字体大小,是否开启夜间模式)等。
其运行原理如下:
在这里插入图片描述

应用实例

初始化preferences

  1. 通过import { preferences } from ‘@kit.ArkData’;导入组件
  2. 使用context和文件名组件初始化Preferences ,注意是异步初始化
import { preferences } from '@kit.ArkData';
const TAG: string = '[Index]'
const PREFERENCES_NAME = 'theme.db'
//主题样式
const THEME_NAMES: string[] = ['default', 'simplicity', 'pomeloWhtie']
let preferenceTheme: preferences.Preferences | null = null

@Entry
@Component
struct Index {
  @State nowTheme: string = ''
  async aboutToAppear() {
    //从内存中获取轻量级存储db文件
    await this.getPreferencesFromStorage()
    //省略部分代码
  }
  //使用异步初始化Preferences 
  async getPreferencesFromStorage() {
    let context = getContext(this) as Context
    preferenceTheme = await preferences.getPreferences(context, PREFERENCES_NAME)
  }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

保存并持久化数据

  1. 通过put(k,v)方法保存数据
  2. 通过flush将数据持久化到本地
  async putPreference(data: string) {
    if (preferenceTheme !== null) {
      await preferenceTheme.put('theme', data)
      await preferenceTheme.flush()
    }
  }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

获取数据

  1. 通过get方法获取数据,该数据返回一个Promise
  async getPreference(): Promise<string> {
    Logger.info(TAG, `Get begin`)
    let theme: string = ''
    if (preferenceTheme !== null) {
      theme = await preferenceTheme.get('theme', 'default') as string
      return theme
    }
    return theme
  }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  1. 使用方法

@Entry
@Component
struct Index {
  @State nowTheme: string = ''
  @State themeDatas: Array<ImageAndName> = []

  async aboutToAppear() {
    //从内存中获取轻量级存储db文件
    await this.getPreferencesFromStorage()
    //从轻量级存储db文件中获取键名为theme的键值
    this.nowTheme = await this.getPreference()

  }
 }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

参考资料

通过用户首选项实现数据持久化
本文demo源码
在这里插入图片描述

注:本文转载自blog.csdn.net的郭梧悠的文章"https://yanchen.blog.csdn.net/article/details/140003972"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2491) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top