在鸿蒙OS中,不同HAR包之间的跳转可以通过路由管理实现。以下是具体步骤:路由管理的实现RouterModule:定义全局的路由栈和路由表信息 。路由栈是NavPathStack对象,与Entry.hap的Navigation组件绑定,RouterModule通过持有NavPathStack管理Navigation组件的路由信息。路由表builderMap是Map结构,以key-value的形式存储了需要路由的页面组件信息,其中key是自定义的唯一路由名,value是WrappedBuilder对象,该对象包裹了路由名对应的页面组件 页面跳转的实现路由注册和路由获取:在工程主入口模块Entry.hap中引入RouterModule模块和所有需要进行路由注册的业务HAR模块 。在RouterModule模块中定义路由表和路由获取方法,业务HAR模块通过路由注册方法将需要路由的页面组件委托给RouterModule管理 。路由跳转:在需要进行页面跳转的地方(如A1组件)调用RouterModule模块的push方法实现跳转到指定页面。push方法会动态加载目标页面,并触发路由注册逻辑。动态加载初始化函数:在需要加载多个页面的HAR模块(如B.har)中定义加载时的初始化函数harInit 。该函数在页面加载时被调用,动态加载不同的页面 。路由信息:在push方法中,通过RouterModel作为参数传递路由信息,包括目标包名、路由名和所需的参数信息。RouterModule根据路由名调用harInit函数,实现页面的动态加载。多路由栈管理路由栈表:在RouterModule模块中建立一个路由栈表,以key-value的形式存储多个Navigation组件对应的路由栈 。通过routerName获取到路由栈,再进行方法调用 具体场景示例假设有3个业务模块A.har、B.har、C.har,各模块包含以下页面:A.har模块中包含A1组件。B.har模块中包含B1、B2、B3组件 。C.har模块中包含C1、C2组件 。当需要从A1组件逐级返回到B1组件,再返回到C1组件时,可以按照以下步骤实现:在A.har的A1组件中调用RouterModule的pop方法,返回到B.har的B2组件 在B.har的B2组件中调用RouterModule的pop方法,返回到C.har的C2组件 。实现步骤总结依赖解耦:通过将HAR包之间的直接依赖关系转移到HAP/HSP中配置,实现HAR包间依赖解耦 。路由管理:定义RouterModule模块,管理全局路由表和路由栈 。页面跳转:在需要跳转的页面中调用RouterModule的push方法,传递路由信息实现页面跳转。动态加载:在需要加载多个页面的HAR模块中定义初始化函数,通过路由信息动态加载页面
在鸿蒙OS中,不同HAR包之间的跳转可以通过路由管理实现。以下是具体步骤:
具体场景示例假设有3个业务模块A.har、B.har、C.har,各模块包含以下页面:
当需要从A1组件逐级返回到B1组件,再返回到C1组件时,可以按照以下步骤实现:
实现步骤总结