ARouter框架使用总结及思考
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ARouter框架使用总结及思考相关的知识,希望对你有一定的参考价值。
参考技术AARouter框架不仅提供了强大的路由跳转功能,还有其他的能力。该框架对模块解耦,组件化设计提供了强有力的支持。
ARouter框架提供的具体功能包括Native页面跳转,URL页面跳转,获取Fragment,提供能力接口,拦截器等。
ARouter框架最基础的能力就是页面跳转。针对模块中支持外部模块跳转的页面,可以配置ARouter的注解,便于模块内外跳转到该页面。页面跳转的方法简明易用,不需要知道页面的class信息,避免模块间的耦合性。
1、普通的页面跳转
build的入参可以是build(String path)、build(String path, String group)(D eprecated,不建议使用)、build(Uri url)三种。ARouter的path一般包括两个层级"/group/pageName"。
传入参数Uri时,ARouter可以按照Uri的解析规则,获取Uri的path数据传入build函数。Uri解析规则如图
2、带参数页面跳转
可以通过with(bundle),withString(key, value)等传递数据。目标页面通过getIntent获取参数。
ARouter支持通过Autowired自动装配参数,框架来完成字段的赋值。
3、支持startActivityForResult的页面跳转
navigation的第一个参数必须时Activity,第二个参数是requestCode。在Activity中重写onActivityResult(int requestCode, int resultCode, Intent data)即可处理返回信息
4、NavigationCallback
可以通过NavigationCallback监控页面跳转的情况。
ARouter支持在h5页面中,通过URL直接跳转到原生页面。关于URL调起Intent的内容也可参考 为什么可以通过URL来调起APP - URL Scheme和Intent
可以通过对Fragment添加注解,后续通过ARouter获取Fragment实例。这对模块划分,APP壳工程开发,提供了便利性。
ARouter支持模块通过声明接口来对外提供能力,获取数据等。首先通过定义IProvider的子接口,进而实现该子接口来提供能力。这个功能有助于实现模块之间的解耦。
接口支持同步回调,也可以使用callback参数进行异步回调。在考虑组件化开发中,和同事讨论如何避免不同模块之间传递数据结构,暂定采用json来在传输。后续的设想是调研跨模块数据结构传输方案,参考aidl。
不过也可通过提供多个能力接口来避免复杂的数据结构传输。
使用方可通过依赖注入,通过路径或接口类名来获取接口实例,进而提供服务。
参考文档
为什么可以通过URL来调起APP - URL Scheme和Intent
以上是关于ARouter框架使用总结及思考的主要内容,如果未能解决你的问题,请参考以下文章