HarmonyOS 单例问题

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

HarmonyOS
2024-12-27 14:53:04
浏览
收藏 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
微信
回复
2024-12-27 16:59:27
相关问题
HarmonyOS 关于问题
712浏览 • 1回复 待解决
HarmonyOS TaskPool子线程问题
740浏览 • 1回复 待解决
HarmonyOS 对象如何实现
1005浏览 • 1回复 待解决
HarmonyOS 模式不生效
367浏览 • 1回复 待解决
HarmonyOS 类被反复初始化的问题
443浏览 • 1回复 待解决
创建的换了页面后不生效问题
2551浏览 • 3回复 待解决
HarmonyOS navigation有模式吗
385浏览 • 1回复 待解决
HarmonyOS静态库是否是
399浏览 • 1回复 待解决
如何获取为undefined
944浏览 • 1回复 待解决
HarmonyOS 如何创建的WebView组件
446浏览 • 1回复 待解决
HarmonyOS 路由跳转如何实现效果
423浏览 • 1回复 待解决
HarmonyOS 如何构建跨动态库的
755浏览 • 1回复 待解决
HarmonyOS 模式拿不到类的对象
852浏览 • 1回复 待解决
HarmonyOS 怎么实现线程安全的
575浏览 • 1回复 待解决
实现模式下的数据存储
1635浏览 • 1回复 待解决
ArkTS层实例化与介绍
3619浏览 • 1回复 待解决
HarmonyOS Entry和Hsp中创建的失效
687浏览 • 1回复 待解决
在hsp中存在多个的情况
638浏览 • 1回复 待解决
提问
该提问已有0人参与 ,帮助了0人