HarmonyOS 鸿蒙Next关于用户首选项的一些问题

HarmonyOS 鸿蒙Next关于用户首选项的一些问题 应用场景:user01偏好字体大小是40,user02偏好字体大小是20,账号切换后app的字体大小能自动调整为当前登录用户的偏好字体大小。

上述的应用场景可以用Preferences完成吗?

我注意到获取Preferences实例的preferences.getPreferences方法里需要传 preference的名称,所以猜测账号切换时,重新获取一次preference的实例应该就行了。

但我实际尝试下来碰到了问题

默认字体大小为50

第一次打开应用,preferenceName ='user01' 字体大小设置为40

修改代码preferenceName ='user02',重新打开应用,字体大小设置为20

修改代码preferenceName ='user01',重新打开应用,发现字体大小又变成了默认的50

太奇怪了,原来的preference文件难道被删除了?

我不修改preferenceName,以user01设置完字号大小,再重新打开应用字号大小是有成功保存的。


更多关于HarmonyOS 鸿蒙Next关于用户首选项的一些问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复
  1. getPreferences是异步的,你确定没有同步使用吧
  2. 写入文件的时候需要调用flush()方法,确定调了没?
  3. 不要用模拟器测,要用真机测,测的时候在开发工具上要勾选允许覆盖安装选项(entry–>edit config–>keep application data),不然每次运行都会删除手机里的app重新安装,那就每次启动都是默认值了。

更多关于HarmonyOS 鸿蒙Next关于用户首选项的一些问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


解决啦非常感谢!是因为我没有勾选允许覆盖安装选项。

HarmonyOS鸿蒙Next中的用户首选项(Preferences)是一种轻量级的数据存储方式,主要用于存储应用的配置信息或用户偏好设置。它基于键值对(Key-Value)的形式,支持存储基本数据类型如字符串、整型、布尔值等。

在鸿蒙Next中,用户首选项的API位于ohos.data.preferences包中。开发者可以通过Preferences类来创建、读取、更新和删除首选项数据。首选项数据存储在本地文件中,每个应用有独立的存储空间,数据默认加密存储,确保安全性。

使用getPreferences方法可以获取指定名称的首选项实例,通过putStringputInt等方法写入数据,使用getStringgetInt等方法读取数据。写入数据后,需调用flushcommit方法将数据持久化到文件。

首选项适用于存储小规模、非结构化数据,不适合存储大规模或复杂数据。对于需要频繁读写或数据量较大的场景,建议使用其他存储方式如关系型数据库或分布式数据对象。

鸿蒙Next的首选项API与Android的SharedPreferences类似,但在实现和细节上有所优化,更符合鸿蒙系统的设计理念。

回到顶部