HarmonyOS应用开发中实现本地化存储的几种方式
Preferences 存储
适用于存储简单的键值对数据,如用户设置、配置信息等。其特点是轻量级、使用简单,适合频繁读取和少量更新的场景,数据存储在本地沙盒中,应用重启后数据保持不变。
-
获取 Preferences 实例 :使用
dataPreferences.getPreferences(context, 'preferenceName')
方法来获取或创建一个 Preferences 实例,其中context
是应用的上下文,preferenceName
是存储的名称。 -
存储数据 :通过
putString
、putInt
、putBoolean
等方法来存储不同类型的数据,最后调用flush()
方法使数据持久化到存储系统中。 -
读取数据 :使用
getString
、getInt
、getBoolean
等方法来读取存储在 Preferences 中对应类型的数据。 -
删除数据 :调用
delete(key)
方法可删除具体键的值,使用clear()
方法则可删除所有数据
文件存储
适合存储较大的数据,如日志文件、图片、视频等。应用可以在自己的私有目录中进行文件的读写操作,也可以申请权限后读取共享目录中的文件。
-
文本文件存储 :以文本格式存储数据,如配置文件、日志等。可以通过随机访问文件类实现,打开文件时需指定访问模式,如只读、读写等。
-
二进制文件存储 :以二进制格式存储数据,如图片、音频等媒体文件。与文本文件存储类似,也是使用随机访问文件类进行操作。
-
文件存储路径 :应用私有目录通过
context.filesDir
获取,无需额外权限;公共目录需申请相应权限,如ohos.permission.READ_USER_STORAGE
等。
关系型数据库存储
SQLite 是一种轻量级的嵌入式数据库,鸿蒙 OS 中的 RDB Store 基于 SQLite,适合存储结构化的数据,如用户信息、订单记录等。
-
创建数据库和表 :创建一个继承自
RdbStoreCallback
的类,在onCreate
方法中定义表结构,通过execSQL
方法执行 SQL 语句来创建表。 -
插入数据 :使用
RdbStore
的insert
方法插入数据,需先创建ContentValues
对象来存储要插入的数据。 -
查询数据 :使用
query
方法查询数据,需指定查询的表名、列名等条件,返回ResultSet
对象,通过该对象可获取查询结果。 -
更新数据 :使用
update
方法更新数据,需指定更新条件和要更新的列值。 -
删除数据 :使用
delete
方法删除数据,需指定删除条件。
对象关系映射数据库存储
通过使用类似 LitePal 的轻量级数据库框架,可以更方便地进行对象关系映射存储。
-
添加依赖 :在项目的
build.gradle
文件中添加 LitePal 的依赖。 -
定义数据模型 :创建一个继承自
LitePalSupport
的 Java 类来定义数据模型,如用户信息类。 -
配置数据库 :在
assets
目录下创建litepal.xml
配置文件,配置数据库名称、版本以及数据模型类与表的映射关系。 -
执行数据操作 :使用 LitePal 提供的 API 进行数据的增、删、改、查等操作。
分布式数据管理
通过 DistributedData
实现多设备数据同步,需设备登录同一华为帐号。
-
初始化 :在模块的
config.json
文件中声明distributedDataManager
权限,并在主 Ability 或页面中初始化分布式数据管理器。 -
创建键空间 :使用
create
方法创建键空间,指定感兴趣的键前缀列表、设备 ID 列表等,通过监听器管理数据变更。 -
发布数据 :调用发布 API,数据会同步到其他设备,其他设备通过监听器得到数据变更通知。
-
查询数据 :依据指定规则,如设备 ID、键等查询目标数据,若本地缓存无数据,会从云端获取。