HarmonyOS 鸿蒙Next Har包中静态变量复用的问题

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

HarmonyOS 鸿蒙Next Har包中静态变量复用的问题

有一个Har包,叫router。其中有NavPathStack的静态变量。
看到在Har1、Har2中的引用的router中 的NavPathStack都是没有初始化的。
得出的结论是:子Har中的静态变量不是跟着进程走的,而是跟着har、hsp变化的?
那么应该怎么处理这种情况?

封装了一下NavPathStack为router的har包
基本每个业务包都会引用这个包。
而每个业务模块中使用router中的内容都是全新的。之前在entry中设定的记录数据都不在了。


更多关于HarmonyOS 鸿蒙Next Har包中静态变量复用的问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复
是想要所有模块使用router的时候都是同一个单例吗?如果是这样的话,在工程级build-profile.json5文件中的buildOption下新增useNormalizedOHMUrl字段,用于指定是否使用OHMUrl格式,使用集成态HSP需使用OHMUrl格式。具体请参考:

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/ide-hvigor-build-profile-0000001778834297-V5#section511142752919

之前源码引用不支持单例,属于之前的规格, 新增的useNormalizedOHMUrl 验证是单例的

更多关于HarmonyOS 鸿蒙Next Har包中静态变量复用的问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next Har包中,静态变量复用的问题通常涉及到资源管理和内存优化的需求。静态变量由于其在类加载时初始化且生命周期贯穿整个应用进程,因此如果不加以合理管理,可能会导致内存泄漏或资源占用过多。

在鸿蒙系统中,针对静态变量的复用,可以采取以下几种策略:

  1. 单例模式:通过单例模式确保静态变量只被实例化一次,同时提供一个全局访问点,以便在需要时复用该变量。

  2. 对象池:对于需要频繁创建和销毁的对象,可以使用对象池技术。在对象池中,静态变量作为对象实例的缓存,通过借出和归还机制来复用对象,减少内存分配和回收的开销。

  3. 弱引用:使用弱引用来引用静态变量,可以避免内存泄漏。弱引用不会增加对象的强引用计数,因此当对象不再被其他强引用持有时,可以被垃圾回收器回收。

  4. 线程安全:在多线程环境下,静态变量的复用需要考虑线程安全问题。可以使用同步机制(如锁)来保证对静态变量的访问是线程安全的。

请注意,静态变量的复用需要谨慎处理,以避免引入新的bug或性能问题。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部