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

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

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

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

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

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

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

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

分享
微博
QQ
微信
回复
2024-07-08 15:09:19
相关问题
HarmonyOS Entry和Hsp中创建失效
255浏览 • 1回复 待解决
HarmonyOS 弹窗封装open生效
162浏览 • 1回复 待解决
实现模式下数据存储
773浏览 • 1回复 待解决
HarmonyOS 关于onKeyEvent生效问题
105浏览 • 1回复 待解决
如何获取为undefined
266浏览 • 1回复 待解决
HarmonyOS 对象如何实现
217浏览 • 1回复 待解决
ArkTS层实例化与介绍
2082浏览 • 1回复 待解决
组合手势被抽离成方法生效
540浏览 • 1回复 待解决
HarmonyOS margin生效
390浏览 • 1回复 待解决
ConstraintSize尺寸设置生效
2158浏览 • 1回复 待解决
关于文档中说har中不能用疑惑
1640浏览 • 1回复 待解决
首选项获取实例,实例是否为
1784浏览 • 1回复 待解决
textfield截断属性生效
2648浏览 • 1回复 待解决
HarmonyOS expandSafeArea生效
72浏览 • 1回复 待解决
abiFilters配置生效
204浏览 • 1回复 待解决
Web组件onKeyEvent键盘事件生效
1866浏览 • 1回复 待解决