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
相关问题
如何监听窗口大小的变化
2814浏览 • 1回复 待解决
HarmonyOS获取设备标识
777浏览 • 1回复 待解决
HarmonyOS 页面高度发生变化
636浏览 • 1回复 待解决
HarmonyOS窗口路由切换问题
382浏览 • 1回复 待解决
HarmonyOS page如何监听数据变化
500浏览 • 1回复 待解决
HarmonyOS onMemoryLevel监听内存变化
223浏览 • 1回复 待解决
HarmonyOS 网络变化监听失效
428浏览 • 1回复 待解决
如何监听window大小的变化
948浏览 • 1回复 待解决
HarmonyOS 如何监听系统主题变化
459浏览 • 1回复 待解决
HarmonyOS 如何监听组件自身尺寸变化
471浏览 • 1回复 待解决
HarmonyOS 如何监听某个变量是否变化
411浏览 • 1回复 待解决
如何实现路由的动态跳转
731浏览 • 1回复 待解决