HarmonyOS 单例问题

我像ts那样创建单例对象的话,在不同的page里面引入,这个对象在应用的生命周期中是唯一的么?

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

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

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

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

请参考官方文档链接:

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

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

就比如如下单例对象的代码,要放在一个新建一个ets文件里面(右击-new-ArkTS File)

export class DataManager {
  private static manager: DataManager;
  count:number = 0;

  static instance() {
    if (!DataManager.manager) {
      DataManager.manager = new DataManager();
    }
    return DataManager.manager;
  }
}

而不能放在Page类ets文件下,例如新建工程里的index.ets文件,或者index.ets文件所在pages文件夹右击-new-page下所创建的page类文件,这里面写的单例的作用范围只是Page的范围。

分享
微博
QQ
微信
回复
7天前
相关问题
HarmonyOS 关于问题
139浏览 • 1回复 待解决
HarmonyOS TaskPool子线程问题
104浏览 • 1回复 待解决
HarmonyOS 类被反复初始化的问题
71浏览 • 1回复 待解决
创建的换了页面后不生效问题
2239浏览 • 3回复 待解决
HarmonyOS静态库是否是
90浏览 • 1回复 待解决
HarmonyOS 对象如何实现
486浏览 • 1回复 待解决
HarmonyOS 如何创建的WebView组件
130浏览 • 1回复 待解决
如何获取为undefined
535浏览 • 1回复 待解决
HarmonyOS 如何构建跨动态库的
425浏览 • 1回复 待解决
HarmonyOS 路由跳转如何实现效果
76浏览 • 1回复 待解决
实现模式下的数据存储
1178浏览 • 1回复 待解决
HarmonyOS 模式拿不到类的对象
406浏览 • 1回复 待解决
HarmonyOS 怎么实现线程安全的
225浏览 • 1回复 待解决
ArkTS层实例化与介绍
3187浏览 • 1回复 待解决
HarmonyOS Entry和Hsp中创建的失效
506浏览 • 1回复 待解决
在hsp中存在多个的情况
362浏览 • 1回复 待解决
提问
该提问已有0人参与 ,帮助了0人