HarmonyOS 鸿蒙Next 关于preferences.Preferences存储问题

发布于 1周前 作者 yuanlaile 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 关于preferences.Preferences存储问题

登录成功后,用的preferences.Preferences存储是否登录的标记,然后router.back返回

下次进入app,通过preferences.Preferences取出登录标记,有时候能取到,有时候是undefined,是不是还没存进去的时候,不能back返回,一旦返回就会停止存储

3 回复
1、使用PersistentStorage的限制条件 持久化数据是一个相对缓慢的操作,应用程序应避免以下情况: 

Ⅰ:持久化大型数据集。 

Ⅱ:持久化经常变化的变量。

 当持久化更改的过程变得太繁重时,PersistentStorage实现可能会限制持久化属性更改的频率。 PersistentStorage只能在UI页面内使用,否则将无法持久化数据。 PersistentStorage的持久化变量最好是小于2kb的数据,不要大量的数据持久化, 因为PersistentStorage写入磁盘的操作是同步的,大量的数据本地化读写会同步在UI线程中执行,影响UI渲染性能。 

如果开发者需要存储大量的数据,建议使用数据库api。

1.PersistentStorage是同步写入磁盘;Preferences是全量加载进内存。 

2.PersistentStorage的持久化变量最好是小于2kb的数据;Preferences存储的数据不超过一万条,Key键为string类型,要求非空且长度不超过80个字节,如果Value值为string类型,长度不超过8192个字节。 

3.PersistentStorage只能在UI页面内使用。 

4.PersistentStorage不要大量的数据持久化,因为PersistentStorage写入磁盘的操作是同步的,大量的数据本地化读写会同步在UI线程中执行,影响UI渲染性能。如果开发者需要存储大量的数据,建议使用数据库api。 

5.PersistentStorage存储AppStorage属性UI状态,以确保这些属性在应用程序重新启动时的值与应用程序关闭时的值相同;Preferences一般为应用保存用户的个性化设置(字体大小,是否开启夜间模式)等。

更多关于HarmonyOS 鸿蒙Next 关于preferences.Preferences存储问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


取值的时候用的是同步方法还是异步方法

在HarmonyOS鸿蒙Next系统中,preferences.Preferences 存储机制用于管理应用程序的轻量级键值对数据。若遇到preferences.Preferences存储问题,可能涉及以下几个方面:

  1. 存储权限: 确保应用已正确申请并获取了存储权限。在鸿蒙系统中,权限管理较为严格,缺少权限可能导致存储操作失败。

  2. 存储路径: 检查存储路径是否正确设置。鸿蒙系统对存储路径有特定要求,路径错误可能导致数据无法正确读写。

  3. 数据类型: 确认存储的数据类型与preferences.Preferences API要求一致。存储非支持类型的数据可能会导致异常。

  4. 并发访问: 多个线程同时访问同一Preferences实例可能导致数据不一致或异常。确保对Preferences的访问是线程安全的。

  5. 数据清理: 检查是否有代码或系统策略导致数据被意外清理。鸿蒙系统可能会在特定情况下清理缓存数据。

  6. 系统日志: 查看系统日志以获取更多错误信息。日志中可能包含导致存储失败的详细原因。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。

回到顶部