Android 路由(Router)

在Android開發(fā)中,最常見也是最常用的功能就是頁面的跳轉(zhuǎn),我們經(jīng)常需要面對(duì)從瀏覽器或者其他App跳轉(zhuǎn)到自己App中頁面的需求,不過就算是簡簡單單的頁面跳轉(zhuǎn),隨著時(shí)間的推移,也會(huì)遇到一些問題:

(1)集中式的URL管理:談到集中式的管理,總是比較蛋疼,多人協(xié)同開發(fā)的時(shí)候,大家都去AndroidManifest.xml中定義各種IntentFilter,使用隱式Intent,最終發(fā)現(xiàn)AndroidManifest.xml中充斥著各種Schame,各種Path,需要經(jīng)常解決Path重疊覆蓋、過多的Activity被導(dǎo)出,引發(fā)安全風(fēng)險(xiǎn)等問題

(2)可配置性較差:Manifest限制于xml格式,書寫麻煩,配置復(fù)雜,可以自定義的東西也較少

(3)跳轉(zhuǎn)過程中無法插手:直接通過Intent的方式跳轉(zhuǎn),跳轉(zhuǎn)過程開發(fā)者無法干預(yù),一些面向切面的事情難以實(shí)施,比方說登錄、埋點(diǎn)這種非常通用的邏輯,在每個(gè)子頁面中判斷又很不合理,畢竟activity已經(jīng)實(shí)例化了

(4)跨模塊無法顯式依賴:在App小有規(guī)模的時(shí)候,我們會(huì)對(duì)App做水平拆分,按照業(yè)務(wù)拆分成多個(gè)子模塊,之間完全解耦,通過打包流程控制App功能,這樣方便應(yīng)對(duì)大團(tuán)隊(duì)多人協(xié)作,互相邏輯不干擾,這時(shí)候只能依賴隱式Intent跳轉(zhuǎn),書寫麻煩,成功與否難以控制。

為了解決以上問題,我們需要一款能夠解耦、簡單、功能多、定制性較強(qiáng)、支持?jǐn)r截邏輯的路由組件:我們選擇了Alibaba的ARouter,ARouter是阿里巴巴開源出來的一款Android路由框架。

功能介紹

1.添加依賴和注解

apply plugin: 'com.neenbedankt.android-apt'

2.添加注解

// 在支持路由的頁面、服務(wù)上添加注解(必選)

// 這是最小化配置,后面有詳細(xì)配置

@Route(path ="/test/1")

public class YourActivity extend Activity{? ? ... }

3.初始化SDK

ARouter.init(mApplication);// 盡可能早,推薦在Application中初始化

4.發(fā)起路由操作

// 1. 應(yīng)用內(nèi)簡單的跳轉(zhuǎn)(通過URL跳轉(zhuǎn)在'中階使用'中)

ARouter.getInstance().build("/test/1").navigation();

// 2. 跳轉(zhuǎn)并攜帶參數(shù)

ARouter.getInstance().build("/test/1")

.withLong("key1",666L)

.withString("key3","888")

.navigation();

5.通過URL跳轉(zhuǎn)

// 新建一個(gè)Activity用于監(jiān)聽Schame事件

// 監(jiān)聽到Schame事件之后直接傳遞給ARouter即可

// 也可以做一些自定義玩法,比方說改改URL之類的

// http://www.example.com/test/1

public classSchameFilterActivityextendsActivity {

@Override

protected voidonCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

// 外面用戶點(diǎn)擊的URL

Uri uri = getIntent().getData();

// 直接傳遞給ARouter即可

ARouter.getInstance().build(uri).navigation();

finish();

}

}

6.

?著作權(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),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 開發(fā)一款A(yù)pp,總會(huì)遇到各種各樣的需求和業(yè)務(wù),這時(shí)候選擇一個(gè)簡單好用的輪子,就可以事半功倍 前言 上面一段代碼,在...
    WangDeFa閱讀 66,075評(píng)論 44 198
  • 本文已獨(dú)家授權(quán) 郭霖 ( guolin_blog) 公眾號(hào)發(fā)布! 本文意在快速集成并掌握阿里Android技術(shù)團(tuán)...
    騎小豬看流星閱讀 160,229評(píng)論 33 341
  • 本文意在快速集成并掌握阿里Android技術(shù)團(tuán)隊(duì)開源的一款路由框架。這款路由框架可以為我們的應(yīng)用開發(fā)提供更好更豐富...
    kven3574閱讀 416評(píng)論 0 2
  • 不怕跌倒,所以飛翔 參考文獻(xiàn):superxlcr的ARouter學(xué)習(xí)筆記碼字農(nóng)民工的文章繁華落盡666的文章 本文...
    筆墨Android閱讀 714評(píng)論 0 6
  • 敬愛的李老師,智慧的班主任,親愛的躍友們: 大家好!我是來自文登奧沃斯教育的許翔麗,我是黃櫟圜黃校的人。 今...
    奧沃斯許翔麗閱讀 262評(píng)論 0 0

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