Router框架
Intent intent = new Intent(mContext, XxxActivity.class);
intent.putExtra("key","value");
startActivity(intent);
在Android开发中,是最常用的功能就是页面的跳转,先排除从浏览器或者其他App跳转到自己App中页面的需求,仅仅是简简单单的页面跳转,随着时间的推移,也会遇到一些问题:
-
集中式的URL管理
- 谈到集中式的管理,总是比较蛋疼,多人协同开发的时候,大家都去AndroidManifest.xml中定义各种IntentFilter,使用隐式Intent,最终发现AndroidManifest.xml中充斥着各种Schame,各种Path,需要经常解决Path重叠覆盖、过多的Activity被导出,引发安全风险等问题
-
可配置性较差
- Manifest限制于xml格式,书写麻烦,配置复杂,可以自定义的东西也较少
-
跳转过程中无法插手
- 直接通过Intent的方式跳转,跳转过程开发者无法干预,一些面向切面的事情难以实施,比方说登录、埋点这种非常通用的逻辑,在每个子页面中判断又很不合理,毕竟activity已经实例化了
-
跨模块无法显式依赖
- 在App小有规模的时候,我们会对App做水平拆分,按照业务拆分成多个子模块,之间完全解耦,通过打包流程控制App功能,这样方便应对大团队多人协作,互相逻辑不干扰,这时候只能依赖隐式Intent跳转,书写麻烦,成功与否难以控制。
而Router框架很好地解决了以上问题,比如ARouter。
ARouter路由框架
- 支持通过URL进行跳转,并自动注入参数到目标页面
- 支持多模块工程使用
- 支持添加多个拦截器,自定义拦截顺序
- 支持依赖注入,可单独作为依赖注入框架使用
- 等等...
详见 传送门
组件化
随着时间的推移,项目变得越来越臃肿,随便修改一些东西,重新编译一次,也要几分钟,极大影响开发效率。
使用组件化可实现
- 模块间进一步解耦,所有的基础公共库按需进行依赖,各个项目可共用
- 开发阶段仅对单个模块进行运行和调试,提高开发效率
- 减少协同开发中的冲突,提高开发效率
- 可自由选择开发姿势(MVC/MVP/MVVM等)
- 可进行针对性的的测试(仅需对修改过的模块进行测试)
- 实现各模块的配置和组装,当一个功能不需要的时候,随时可去掉,当又需要该功能的时候,随时又可加上。
而使用Router框架是实现组件化的一个很好的方式。
