什么是Rabbits?
Rabbits是用于Android项目的路由组件。具有统一管理路由、支持动态更新等方便的特性。因为经常用到「跳转」这个词,想一想兔子经常和跳这个动作联系起来,所以这个项目就叫Rabbits了。
什么是路由?
如果不接触Web开发,通常看到路由应该是“路由器”。和网络中的路由类似,Web和App中的路由也是为了确定某种路径,启动某个页面或者组件。在Android中,路由一般都是完成url或者path到某个页面(通常是Activity)的映射。
为什么需要路由?
startActivity足够简单和直观,那么为什么要用路由呢?用一句话来概括就是路由可以统一App内的所有页面导航,原生页面或者WebView内的网页。如果你的项目涉及到用WebView展示某些内容,比如新闻、论坛等App,使用路由即可统一这些页面间的导航,业务逻辑层面完全不需要关心下一个页面的实现。
路由的存在使得在WebView中跳转到App原生页面变得异常简单,只需要在WebViewClient的回调中加入几行代码。
支持更新的路由,更使得A/B Test和Fallback到Wap页面变得轻而易举,仅仅需要下发路由表。
为什么需要Rabbits?
去年下半年开始,出现了很多个路由组件。Rabbits和他们相比又有那些不同呢?
编译时注解
Rabbits使用编译时注解,避免了运行时注解的性能损耗,同时不要求对被注解的类进行混淆排除,一定程度上还加强了安全性。
统一管理路由表
Rabbits的路由表使用json进行统一管理,避免url注解散落到各处的尴尬。Activity和Fragment类的注解仅标识该页面的page name,一旦设置不需要改动,不易出错。
Rabbits还会根据路由表生成辅助类管理url常量,绝大多数情况,项目中不会出现手写url和path的情况,减少typo的可能性。
动态更新
Rabbits提供动态更新的能力,一旦更新,立即生效;同时会将最新的路由表缓存到文件,下次冷启动将直接加载。
Fragment支持
Rabbits支持对Fragment进行注解,经过一些设置之后,可以实现在Fragment间完成类似Activity的导航效果。
总结起来,Rabbits配置简单,上手快,侵入性小,扩展丰富,非常值得尝试。
Rabbits上手
Rabbits的调用方法非常简单,流式调用也使得代码比较美观。下面通过几个例子来看一下使用Rabbits的代码长什么样子:
Ex1:
Rabbit.from(MainActivity.this)
.to(P.TEST)
.start();
Ex2:
BaseFragment fragment = (BaseFragment) Rabbit.from(this)
.obtain(uri)
.obtain();
// add fragment to activity
Ex3:
Rabbit.from(this)
.to(P.HOME)
.clearTop()
.start();
Ex4:
Rabbit.from(TestFragment.this)
.to(P.SECOND(123))
.start();