Rabbits - Android路由框架

cover

什么是Rabbits?

Rabbits是用于Android項(xiàng)目的路由組件。具有統(tǒng)一管理路由、支持動(dòng)態(tài)更新等方便的特性。因?yàn)榻?jīng)常用到「跳轉(zhuǎn)」這個(gè)詞,想一想兔子經(jīng)常和跳這個(gè)動(dòng)作聯(lián)系起來(lái),所以這個(gè)項(xiàng)目就叫Rabbits了。

什么是路由?

如果不接觸Web開(kāi)發(fā),通常看到路由應(yīng)該是“路由器”。和網(wǎng)絡(luò)中的路由類似,Web和App中的路由也是為了確定某種路徑,啟動(dòng)某個(gè)頁(yè)面或者組件。在Android中,路由一般都是完成url或者path到某個(gè)頁(yè)面(通常是Activity)的映射。

為什么需要路由?

startActivity足夠簡(jiǎn)單和直觀,那么為什么要用路由呢?用一句話來(lái)概括就是路由可以統(tǒng)一App內(nèi)的所有頁(yè)面導(dǎo)航,原生頁(yè)面或者WebView內(nèi)的網(wǎng)頁(yè)。如果你的項(xiàng)目涉及到用WebView展示某些內(nèi)容,比如新聞、論壇等App,使用路由即可統(tǒng)一這些頁(yè)面間的導(dǎo)航,業(yè)務(wù)邏輯層面完全不需要關(guān)心下一個(gè)頁(yè)面的實(shí)現(xiàn)。
路由的存在使得在WebView中跳轉(zhuǎn)到App原生頁(yè)面變得異常簡(jiǎn)單,只需要在WebViewClient的回調(diào)中加入幾行代碼。
支持更新的路由,更使得A/B Test和Fallback到Wap頁(yè)面變得輕而易舉,僅僅需要下發(fā)路由表。

為什么需要Rabbits?

去年下半年開(kāi)始,出現(xiàn)了很多個(gè)路由組件。Rabbits和他們相比又有那些不同呢?

編譯時(shí)注解

Rabbits使用編譯時(shí)注解,避免了運(yùn)行時(shí)注解的性能損耗,同時(shí)不要求對(duì)被注解的類進(jìn)行混淆排除,一定程度上還加強(qiáng)了安全性。

統(tǒng)一管理路由表

Rabbits的路由表使用json進(jìn)行統(tǒng)一管理,避免url注解散落到各處的尷尬。Activity和Fragment類的注解僅標(biāo)識(shí)該頁(yè)面的page name,一旦設(shè)置不需要改動(dòng),不易出錯(cuò)。
Rabbits還會(huì)根據(jù)路由表生成輔助類管理url常量,絕大多數(shù)情況,項(xiàng)目中不會(huì)出現(xiàn)手寫(xiě)url和path的情況,減少typo的可能性。

動(dòng)態(tài)更新

Rabbits提供動(dòng)態(tài)更新的能力,一旦更新,立即生效;同時(shí)會(huì)將最新的路由表緩存到文件,下次冷啟動(dòng)將直接加載。

Fragment支持

Rabbits支持對(duì)Fragment進(jìn)行注解,經(jīng)過(guò)一些設(shè)置之后,可以實(shí)現(xiàn)在Fragment間完成類似Activity的導(dǎo)航效果。

總結(jié)起來(lái),Rabbits配置簡(jiǎn)單,上手快,侵入性小,擴(kuò)展豐富,非常值得嘗試。

Rabbits上手

Rabbits的調(diào)用方法非常簡(jiǎn)單,流式調(diào)用也使得代碼比較美觀。下面通過(guò)幾個(gè)例子來(lái)看一下使用Rabbits的代碼長(zhǎng)什么樣子:

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();

更多特性請(qǐng)查看WikiDemo項(xiàng)目 。 項(xiàng)目地址: Github

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容