【HarmonyOS NEXT】HSP中静态变量问题

【关键字】

HSP / 静态变量 / module.json5

【问题描述】

工程中定义了一个工具属性的HSP,包含一个静态变量,静态变量定义如下:

export class AppEnvConstant {
private static _instance: AppEnvConstant
static getInstance() {
if (!AppEnvConstant._instance) {
AppEnvConstant._instance = new AppEnvConstant();
}
return AppEnvConstant._instance;
}
private constructor() {
console.log(`AppEnvConstant constructor ${utils.generateRandomUUID(false)}`);
}
}

entry、业务模块(也是HSP)都引用了上述HSP,除了getInstance() 方法外再无其他地方主动调用构造方法。观察应用启动时,发现构造函数调用了两次。在HSP中定义全局变量需要注意哪些?如何避免多次构造实例?

工程里业务模块 HSP1代码中使用工具HSP的静态类,会导致实例化两次; 同样的业务代码拷贝到另一个业务模块HSP2中,就不会实例化两次。 HSP1和HSP2的 build-profile 文件没有区别,module.json5 除了name以外也没有任何区别,oh-package.json导入方式也一致。

【解决方案】

1、可能是由于DevEco Studio打包时未将HSP识别为HSP所导致。

排查方式:

是否工程级依赖配置中配置了HSP,请让entry和业务模块分别依赖HSP。

相对路径的方式依赖了HSP里的代码,这种场景也会导致不会被识别成HSP。

2、两个module中oh-package.json5中 modules/commonutils定义的名字不同,您可以排查一下是否是这个问题导致的。

例如:

modules/trade中是小写

"commonutils": "file:../../libraries/commonutils",

modules/platform中是大写

"commonUtils": "file:../../libraries/commonutils"

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值