创建的单例换了页面后不生效问题

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

HarmonyOS
2024-01-19 15:35:05
浏览
收藏 0
回答 3
待解决
回答 3
按赞同
/
按时间
鱼弦CTO
1
分享
微博
QQ
微信
回复
9天前
commonli

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

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

分享
微博
QQ
微信
回复
2024-01-19 21:15:35
savan

单例模式是一种常见的设计模式,‌用于确保一个类只有一个实例,‌并提供一个全局访问点。‌然而,‌由于每个页面(‌Page)‌都会生成一个独立的JavaScript文件,‌在每个文件中定义的单例实例实际上是独立的,‌因此单例的作用范围仅限于单个页面(‌Page)‌的范围内。‌当在不同页面之间切换时,‌之前页面的单例实例将不再可用,‌导致所谓的“不生效”问题。‌

为了解决这个问题,‌开发者需要将单例的创建范围提升至更高的层级,‌如UIAbility或App级别。‌这样做可以确保单例实例在整个应用程序或至少在某个特定的UIAbility范围内是共享的,‌从而避免在不同页面之间切换时单例实例失效的问题。‌

分享
微博
QQ
微信
回复
2024-07-08 15:09:19
相关问题
实现模式下数据存储
442浏览 • 1回复 待解决
组合手势被抽离成方法生效
354浏览 • 1回复 待解决
ArkTS层实例化与介绍
686浏览 • 1回复 待解决
textfield截断属性生效
1513浏览 • 1回复 待解决
首选项获取实例,实例是否为
715浏览 • 1回复 待解决
关于文档中说har中不能用疑惑
546浏览 • 1回复 待解决
容器组件onVisibleAreaChange生效
630浏览 • 1回复 待解决
ConstraintSize尺寸设置生效
1085浏览 • 1回复 待解决
网络请求创建,持久化问题
271浏览 • 1回复 待解决
Left、Top为什么生效
354浏览 • 1回复 待解决
通过WindowProperties设置属性生效
824浏览 • 1回复 待解决
List组件initialIndex属性设置生效
753浏览 • 1回复 待解决
Web组件onKeyEvent键盘事件生效
741浏览 • 1回复 待解决
使用position之后height生效
898浏览 • 1回复 待解决
在嵌套组件中Scroll生效
886浏览 • 1回复 待解决
音频播放长时任务生效
638浏览 • 1回复 待解决