HarmonyOS 单例类被反复初始化的问题

单例类单例失效,单例类被反复实例化。

export class MessageDataBase {
  private uuid: string = ""

  private constructor() {
    this.uuid = util.generateRandomUUID(true);
    Logger.info("DataBase初始化:" + this.uuid)
  }

  private static INSTANCE: MessageDataBase | null = null
  public static getInstance(): MessageDataBase {
    if (!MessageDataBase.INSTANCE) {
      MessageDataBase.INSTANCE = new MessageDataBase();
    }
    return MessageDataBase.INSTANCE as MessageDataBase
  }
}

目前在使用中发现这个类会被反复实例化,难道和跨模块调用有关?目前有3个模块 ABC,模块类型都是HSP。

诉求:

1.确认单例模式失效的原因。

2.单例模式失效的规避方法。

3.ArkTS里面的类在export到不同的module里面后,class本质被改变了吗,不再是同一个类了吗?

HarmonyOS
2024-12-23 14:50:54
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
zbw_apple

包依赖场景如下:A (hap) -> B(hsp) ->D (hsp) -> C(hsp) -> D(hsp),因A\B\C\D都在1个项目下同时编译,B/C依赖的版本一致。问题发生涉及C++调用ETS的场景,hilog看到进程-线程号均一致。

问题原因是C++回调ETS创建新虚拟机导致,可参考以下资料保证线程安全的回调原ets虚拟机:

使用Node-API接口进行异步任务开发:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/use-napi-asynchronous-task-V5

使用Node-API接口进行线程安全开发:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/use-napi-thread-safety-V5

进程模型:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/process-model-stage-V5

线程模型:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/thread-model-stage-V5

分享
微博
QQ
微信
回复
2024-12-23 17:48:41
相关问题
HarmonyOS Component初始化问题
1779浏览 • 1回复 待解决
HarmonyOS泛型属性如何初始化
1609浏览 • 1回复 待解决
HarmonyOS 导出使用时报未初始化
1217浏览 • 1回复 待解决
HarmonyOS XComponent初始化
1417浏览 • 1回复 待解决
HarmonyOS 自定义弹窗初始化问题
1002浏览 • 1回复 待解决
关于初始化EGL环境相关问题
3025浏览 • 1回复 待解决
HarmonyOS 组件初始化参数
975浏览 • 1回复 待解决
HarmonyOS struct初始化方法
1262浏览 • 1回复 待解决
HarmonyOS 问题
1450浏览 • 1回复 待解决
HarmonyOS 模式拿不到对象
1588浏览 • 1回复 待解决
HarmonyOS 怎么实现线程安全
1354浏览 • 1回复 待解决
HarmonyOS export struct初始化参数
1301浏览 • 1回复 待解决
HarmonyOS 关于问题
1590浏览 • 1回复 待解决
HarmonyOS 初始化EGL环境失败
1167浏览 • 1回复 待解决
初始化安全相机方法
1496浏览 • 1回复 待解决
HarmonyOS 推送服务初始化失败
1251浏览 • 1回复 待解决
HarmonyOS 应用RDB初始化示例
1494浏览 • 1回复 待解决
怎么进行全局初始化操作?
560浏览 • 0回复 待解决
没法调试“已初始化”分支
1242浏览 • 1回复 待解决
HarmonyOS 怎么监听Web初始化完成?
1216浏览 • 1回复 待解决
ArkTS层实例介绍
5012浏览 • 1回复 待解决