您的当前位置:首页正文

Android主流Router库对比(ARouter、ActivityRouter)

2024-11-10 来源:个人技术集锦

本文对Android主流的Router库的异同进行对比,包括阿里的ARouter和mzule的ActivityRouter,详见下表:

类型

ARouter

ActivityRouter

相关文章

共性

1. 支持降级处理。

2. 支持Activity的startActivityForResult

3. 组件单独运行的方式:切换library/application方式编译,框架本身没有提供切换方式,开发者自行解决

4. 没有组件调用的超时设置

5. 无法取消组件调用

6. 无法动态注册/注销组件

7. 组件调用代码侵入性都很高

通信机制

路由 + 接口下沉

路由 + 静态方法

activity变量自动注入

1. 通过apt生成解析参数的代码

2. 在onCreate方法中调用ARouter.getInstance().inject(this);实现自动注入

调用方式(页面跳转)

ARouter.getInstance().build("/test/activity").navigation();

Router.create(url).open(context);

调用方式(调用服务)

ARouter.getInstance().navigation(HelloService.class).sayHello();

与页面跳转相同

组件向外提供服务

接口继承IProvider并下沉到base中,组件中实现接口并通过注解来暴露服务

在静态方法上加注解来暴露服务,但不支持返回值,且参数固定位(context, bundle)

Fragment组件化支持

调用服务的方式实现,未支持后续Fragment内部的功能调用

不支持

组件自动注册方案

新版本(1.3.0)开始支持通过插件完成路由注册

1. apt生成各module的路由表

2. TrasnformAPI + ASM扫描路由表并注册到LogisticsCenter中,无需手动维护组件列表

1. apt生成各module的路由表

2. apt在application的module通过Modules注解生成RouterInit进行注册

3. 需要手动维护Modules注解中的组件列表

跨app组件调用支持

不支持

支持

组件app运行时调用其它组件

一起打包或者通过urlScheme来统一转发

UrlScheme原生支持跨app调用,组件同时安装在设备上即可

通过中介Activity转发:RouterActivity

组件依赖隔离

未隔离

无需依赖、完全隔离

AOP支持

拦截器AOP

特点

1. 阿里出品,使用者众多,QQ群里交流比较活跃

2. 支持分级按需加载

3. 是一个路由框架,并不是完整的组件化方案,可作为组件化架构的通信引擎

1. 业内最早的组件化支持库

2. 通过注解静态方法的方式暴露服务

组件定义代码侵入性

注解定义路由及参数自动注入,侵入性高

注解定义路由,侵入性高

混淆配置

框架中的所有类及框架相关接口的实现类

框架中的所有类

 

参考链接:

 

Top