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
相关问题
如何监听窗口大小的变化
1734浏览 • 1回复 待解决
HarmonyOS获取设备标识
104浏览 • 1回复 待解决
如何监听window大小的变化
181浏览 • 1回复 待解决
如何监听数组内对象属性变化
1981浏览 • 1回复 待解决
如何实现路由的动态跳转
169浏览 • 1回复 待解决
如何监听文件或文件目录的变化
1446浏览 • 1回复 待解决
HarmonyOS数据库数据变化是否可以监听
216浏览 • 1回复 待解决
如何监听Viewmodel里变量值的变化
1697浏览 • 1回复 待解决
UIAbility中是否可以监听页面变化
1235浏览 • 1回复 待解决
ArkTS中如何监听状态变量的变化
374浏览 • 1回复 待解决
如何实现一个监听网络变化的方法
195浏览 • 1回复 待解决
如何监听输入法输入内容的变化
126浏览 • 1回复 待解决