
鸿蒙开源组件——路由框架
Router
项目介绍
- 项目名称:Router
- 所属系列:openharmony的第三方组件适配移植
- 功能:一款简单的,支持在单品、组件化、插件化等环境下使用的路由框架,通过一行url去指定打开指定页面Ability的框架.充分做到页面间解耦, 自动化 可自动解析标准url参数 安全: 路由启动过程中。全程catch住异常并通知用户。完全不用担心crash问题。 强大的拦截器:与大部分的路由不同。提供三种路由拦截器机制,对应不同业务下使用。 方便: 使用apt注解生成路由表,配置方便,易维护。 灵活: 配置路由表方式多样,满足你在任意条件下进行使用。 支持两种路由:页面路由与动作路由。 支持重启路由:路由被拦截后。可通过一行代码无缝恢复重启路由。在登录检查中会很有用。 高度可定制:单品、组件化完美支持,对于插件化环境。也可以针对性的定制使用
- 项目移植状态:已完成
- 调用差异:无
- 开发版本:sdk6,DevEco Studio2.2 Beta1
- 基线版本:Release 2.8.6
演示效果


安装教程
1.远程依赖方式
1.在项目根目录下的build.gradle文件中,
2.在entry模块的build.gradle文件中,
2.本地依赖方式
在sdk6,DevEco Studio2.2 Beta1下项目可直接运行 如无法运行,删除项目.gradle,.idea,build,gradle,build.gradle文件, 并依据自己的版本创建新项目,将新项目的对应文件复制到根目录下
使用说明
1.为Ability添加路由规则
在 Appaction 中指定路由前缀与路由表生成包名
为目标页指定路由规则链接 // 在目标Ability上添加RouterRule注解,添加对应的路由规则 // 同一目标页可以添加多个不同的路由链接。
2.注册路由表
经过上面的配置后,编译后即可生成对应的路由表类,生成的路由表类名统一为RouterRuleCreator:
然后即可通过以下代码进行路由表注册使用:
3.启动路由
还是以上面的example为例。要使用Router启动ExampleActivity, 使用以下链接进行跳转
4.启动浏览器打开网页
当路由链接为http/https时,且此时本地的也没有页面配置过此链接地址时,将触发使用跳转浏览器打开链接逻辑
比如浏览器打开百度页面
5.添加额外数据启动
6.使用路由回调
路由回调为RouteCallback接口,用于在进行路由启动后,对该次路由事件的状态做回调通知:
7.使用ActivityResultCallback
ActivityResultCallback接口用于自动处理onAbilityResult逻辑,可有效避免在onAbilityResult中写一堆的判断switch逻辑。是个很棒的特性。
使用此特性前,需要在BaseAbility中的onAbilityResult方法处,添加上派发方法:
然后即可直接使用
// 添加了resultCallback属性后,即可不指定requestCode了。免去了取值的烦恼
8.使用路由拦截器拦截器
拦截器,顾名思义,就是在路由启动过程中,进行中间状态判断,是否需要拦截掉此次路由事件。使其启动失败。
拦截器的接口名为RouteInterceptor
Router经过长期的迭代,对拦截器进行了详细的分类,提供了三种拦截器提供使用:
-
全局拦截器:对所有的路由事件生效。
- 单次拦截器:对当次路由事件生效。
- 指定目标的拦截器:对指定的目标页面生效
// 在配置的RouterRule的目标页,添加此RouteInterceptors注解即可。 // 在此配置的拦截器,当使用路由启动此页面时,即可被触发。
恢复路由的方式 既然路由可以被拦截,那么也可以直接被恢复。
下面是一个简单的登录拦截实现:
9.使用动作路由
上面主要介绍的页面跳转的路由,也叫页面路由,但实际上。有的时候我们使用路由启动的,并不是需要启动某个页面。而是需要执行一些特殊的操作:比如添加购物车、强制登出等。此时就需要使用动作路由了。
创建动作路由 动作路由通过继承ActionSupport类进行创建:
动作路由的启动方式与页面路由一致:
10. 指定动作路由的执行线程
动作路由是用于执行一些特殊的操作的路由,而有时候部分操作是需要在指定线程进行处理的:
动作路由提供两种指定线程的操作:
启动前进行配置(优先级高):
在定制动作路由时,直接指定线程:
