HarmonyOS 使用@ohos.ArkUI.observer进行无感监听路由变化如何获取路由变化发生在哪个窗口呢?

在多窗口开发实践中,使用@ohos.ArkUI.observer进行注册路由变化事件:routerPageUpdate

在该事件内,如何感知本次路由变化发生在哪一个窗口呢?

HarmonyOS
2024-09-03 12:25:02
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
zxjiu

通过窗口获取UIContext,然后再注册监听,这样可以明确注册哪个窗口路由变化:

关于UIContext,您可以参考一下链接:

https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/js-apis-arkui-UIContext.md#ohosarkuiuicontext-uicontext

是否指的是获取window.WindowStage,如果是的话

可以在EntryAbility.ets的 onWindowStageCreate方法中使用localStorage或者AppStorage将windowStage存入在需要使用的地方取出

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-localstorage-V5

在api升级后,ArkTS 只支持匿名函数自动绑定this,bind可能会失效

routerPageChanged中的info对象中有路由页面的状态,可以用于判断路由变化;

页面发生路由使会执行两次routerPageChanged,例如:从A页面进入B页面,先将A状态变为3,B状态变为0.

enum RouterPageState (页面状态)

ABOUT_TO_APPEAR 0 page即将显示

ABOUT_TO_DISAPPEAR 1 page即将销毁

ON_PAGE_SHOW 2 page显示

ON_PAGE_HIDE 3 page隐藏

ON_BACK_PRESS 4 page返回时

分享
微博
QQ
微信
回复
2024-09-03 15:54:53
相关问题
如何监听窗口大小的变化
2318浏览 • 1回复 待解决
HarmonyOS获取设备标识
468浏览 • 1回复 待解决
HarmonyOS 页面高度发生变化
169浏览 • 1回复 待解决
HarmonyOS窗口路由切换问题
139浏览 • 1回复 待解决
如何实现路由的动态跳转
404浏览 • 1回复 待解决
HarmonyOS 音频设备变化监听
243浏览 • 1回复 待解决
如何监听window大小的变化
537浏览 • 1回复 待解决
如何监听数组内对象属性变化
2351浏览 • 1回复 待解决
HarmonyOS 路由使用优化
36浏览 • 1回复 待解决
HarmonyOS 转场动画推荐方案
88浏览 • 1回复 待解决
如何监听Viewmodel里变量值的变化
1963浏览 • 1回复 待解决