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的路由表使用json进行统一管理,避免url注解散落到各处的尴尬。Activity和Fragment类的注解仅标识该页面的page name,一旦设置不需要改动,不易出错。
Rabbits还会根据路由表生成辅助类管理url常量,绝大多数情况,项目中不会出现手写url和path的情况,减少typo的可能性。
Rabbits提供动态更新的能力,一旦更新,立即生效;同时会将最新的路由表缓存到文件,下次冷启动将直接加载。
Rabbits支持对Fragment进行注解,经过一些设置之后,可以实现在Fragment间完成类似Activity的导航效果。
总结起来,Rabbits配置简单,上手快,侵入性小,扩展丰富,非常值得尝试。
Here N (N ≥ 3) rabbits are playing by the river. They are playing on a number line, each occupying a different integer. In a single move, one of the outer rabbits jumps into a space between any other
兔兔那么可爱怎么会去世? Rosalind编程问题之计算斐波那契数列变式,江湖人称神兔也死问题。 有关不死神兔问题可以参考这一篇文章:Rosalind Java| Rabbits and Recurrence Relations。 Rabbits and Recurrence Relations Problem Recall the definition of the Fibonacci numb
Long long ago, there lived two rabbits Tom and Jerry in the forest. On a sunny afternoon, they planned to play a game with some stones. There were n stones on the ground and they were arranged as a cl
Problem Description Here N (N ≥ 3) rabbits are playing by the river. They are playing on a number line, each occupying a different integer. In a single move, one of the outer rabbits jumps into a spac
Long long ago, there lived two rabbits Tom and Jerry in the forest. On a sunny afternoon, they planned to play a game with some stones. There were n stones on the ground and they were arranged as a cl
Long long ago, there lived two rabbits Tom and Jerry in the forest. On a sunny afternoon, they planned to play a game with some stones. There were n stones on the ground and they were arranged as a cl
原文: Chickens and Rabbits 1000ms 65536K 描述: In the yard were C chickens and R rabbits. Each chicken has one head and two legs. Each rabbit has one head and four legs. There are total 27 heads and 86 le
OpenJudge - 10:Chickens and Rabbits 描述 In the yard were C chickens and R rabbits. Each chicken has one head and two legs. Each rabbit has one head and four legs. There are total 27 heads and 86 legs i
Code '''Scene: There is a pair of rabbits. From the third month after birth, they will give birth to one pair of rabbit every month. When the little rabbits grows to the third month, they will
我想从API中读取要显示的产品。然后,当我按下其中一个显示的产品时,它应该使用url中的产品ID和要在页面上查看的产品详细信息将我路由到一个组件,以获取有关该产品的详细信息。我在这里读取了API中的数据,并详细显示了产品。 我想通过产品ID添加一个路由链接。如何将详细信息作为其他组件的道具发送?
前面我们已经创建了 beego 项目,而且我们也看到它已经运行起来了,那么是如何运行起来的呢?让我们从入口文件先分析起来吧: package main import ( _ "quickstart/routers" "github.com/astaxie/beego" ) func main() { beego.Run() } 我们看到 main 函数是入口函数,但是
通过Group可以实现路由分组,Group 路由分组可以简化你的路由撰写: 有两种方法来使用Group: 第一种,创建Group对象,通过Group方法传入 g := tango.NewGroup() g.Get("/1", func() string { return "/1" }) g.Post("/2", func() string { return "/2" }) o :=
本文向大家介绍浅谈关于Android路由的实现,包括了浅谈关于Android路由的实现的使用技巧和注意事项,需要的朋友参考一下 先说一下背景,目前有需求从外部包括其他应用和WEB跳转到我们自己的APP,就这么个简单的需求…… 要实现这种外部跳转的功能,我们可以理解为打算跳转的一方有多少方式通知到APP进行相对的响应行为。所以,如果是应用之间的跳转,则有多种,你可以直接通过包名和具体的类名去打开已经
我想在我的Android/Eclipse项目中使用gradle,因为我希望能够在正式版本旁边安装我的应用程序的开发版本(如下所示:同时安装稳定和开发应用程序版本的实用方法是什么?) 使用命令行这样做对我来说是可以的。 因此,我将项目的src文件夹移动到src/main/java并创建了一个文件(如下所述:http://www.nodeclipse.org/projects/gradle/andro
我有一个小难题来解决这个问题。 我有一个用户和一个管理员角色。 用户应该能够列出除管理员以外的所有用户。管理员可以列出所有用户。 我想到的第一个解决方案是检查控制器级别的角色: 但是我更想做的是在路线层面上,保持控制器更干净,但不知何故它确实起作用了。它只列出用户,即使我作为管理员登录。 有什么建议吗?谢谢!