桔妹导读:DRouter是滴滴乘客端自研的一套Android路由框架,基于平台化解耦的思想,为组件间通信服务。该项目以功能全面、易用为原则,支持各种路由场景,在页面路由、服务获取和过滤、跨进程及跨应用、VirtualApk插件支持等方面都能提供多样化的服务。目前已在滴滴乘客端、顺风车、单车、国际化、滴滴定制车等十多个滴滴的app内使用,得到各种场景的验证。
1.
DRouter简介
随着业务不断的发展,业务变的种类繁多,项目代码集中且耦合在一起,导致编译速度慢、开发效率低、维护困难、牵一发动全身。这时无论是从工程效能还是业务迭代稳定性的角度考虑,都需要把项目代码拆分成独立的组件。当组件拆分后,在没有代码耦合的前提下,如何快速、方便、灵活的进行组件间跳转、数据通信、生命周期控制是DRouter要解决的问题。
DRouter支持的功能
使用URI字符串导航Activity、Fragment、View、RouterHandler,支持正则表达式
回调式onActivityResult
RouterHandler、Activity支持等待异步完成(hold),并可设置超时时间
RouterHandler指定执行线程
注入拦截器,支持全局拦截器和局部拦截器,面向切面编程
更为多样化的Fragment页面跳转能力
使用接口或基类导航到实现类Service的Class以及实例
支持Service别名以及多维过滤器查找
导航Service可指定任意构造器、支持单例
支持动态注册RouterHandler、Service,绑定生命周期自动解绑
简单易用的跨进程执行RouterHandler、Service
跨进程访问无需提前绑定、如同本地调用一样进行访问
支持客户端进程和服务端进程自动重连
支持VirtualApk
2.
为什么要开发DRouter
滴滴乘客端包容万象,拥有众多的业务和组件,早在15年就已经启动组件化重构。使用滴滴自研的基于JavaSPI插件技术,动态的生成从接口到实现的映射关系,完成了组件化的通信功能,并且应用到了整个滴滴的Android体系中。虽然SPI性能优良、使用便捷,但同时功能单一、支持的场景少也是一直存在的问题。随着组件化实践的常态化,急需要一款功能强大,适合滴滴的场景,定制化程度高的路由框架。
目前市面上已经存在几款路由框架了,比如ARouter,WMRouter。不过滴滴业务繁多,平台化遍布各种场景,对路由的定制化需求强烈,很多功能市面上的路由是不支持的,比如: