HarmonyOS 关于单例问题

1、在模块A的文件中创建一个单例,并导出供其他模块调用;代码如下:

private static instance: SFAmapManager

public static getInstance() :SFAmapManager {
  if (!SFAmapManager.instance) {
    SFAmapManager.instance = new SFAmapManager()
  }
  return SFAmapManager.instance
}

2、在EntryAbility中调用并执行初始化,代码如下

SFAmapManager.getInstance().init("40836cedbc74a2e786d682b201c6ab70",this.context)

3、在模块B中引入模块A,并获取单例对象

locationManager :SFAmapManager = SFAmapManager.getInstance()

经过断点测试发现,后模块B中执行getInstance时,SFAmapManager.instance依然为空,重新创建了实例;

不知问题点在哪里,麻烦指导一下

HarmonyOS
1天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Heiang

单例只有在同一个流程中才有效,换了页面后之前的实例都全是undefined。

对于每个Page都会生成一个js文件,定义的单例会在每个js中都生成一份,所以单例的作用范围只是Page的范围。

如果想共享一个实例,创建范围需要提升至UIAbility或者App级别

请参考官方文档链接:

https://developer.huawei.com/consumer/cn/doc/harmonyos-faqs-V5/faqs-arkui-75-V5

除了多线程使用单例和单例所在har同时被hap和hsp引用等特殊情况,单例对象在应用的生命周期中是唯一

分享
微博
QQ
微信
回复
1天前
相关问题
HarmonyOS TaskPool子线程问题
20浏览 • 1回复 待解决
关于文档中说har中不能用的疑惑
1882浏览 • 1回复 待解决
HarmonyOS 对象如何实现
451浏览 • 1回复 待解决
创建的换了页面后不生效问题
2223浏览 • 3回复 待解决
HarmonyOS 类被反复初始化的问题
34浏览 • 1回复 待解决
如何获取为undefined
498浏览 • 1回复 待解决
HarmonyOS 如何创建的WebView组件
58浏览 • 1回复 待解决
HarmonyOS 模式拿不到类的对象
355浏览 • 1回复 待解决
HarmonyOS 怎么实现线程安全的
60浏览 • 1回复 待解决
ArkTS层实例化与介绍
3041浏览 • 1回复 待解决
HarmonyOS 如何构建跨动态库的
386浏览 • 1回复 待解决
实现模式下的数据存储
1106浏览 • 1回复 待解决
HarmonyOS Entry和Hsp中创建的失效
474浏览 • 1回复 待解决
在hsp中存在多个的情况
312浏览 • 1回复 待解决
首选项获取实例,实例是否为
1974浏览 • 1回复 待解决
提问
该提问已有0人参与 ,帮助了0人