- 資訊首頁(yè) > 開(kāi)發(fā)技術(shù) >
- Android組件化開(kāi)發(fā)路由的示例分析
這篇文章主要介紹了Android組件化開(kāi)發(fā)路由的示例分析,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著(zhù)大家一起了解一下。
設計目的
解耦
跨模塊跳轉
方便配置schema,實(shí)現動(dòng)態(tài)配置跳轉目標
對外部提供遠程訪(fǎng)問(wèn)的功能,實(shí)現跨應用調用響應
主要功能點(diǎn)
支持intent,http,schema三種跳轉
路由表支持xml配置,可自定義,支持多路徑
有攔截器
同時(shí)支持反射和隱式意圖
支持結果回調
支持參數傳遞
鏈式調用
支持url模式傳參
支持配置多個(gè)webview 實(shí)現指定非默認的webview啟動(dòng)url
支持配置多個(gè)prefix
重要的類(lèi)
VpRouter 單例模式 入口類(lèi)
AbsRouter 路由抽象類(lèi) 主要代碼
RouterTable 路由表
IRouterInterceptor(攔截器) IRouterResultCallback(結果回調)
類(lèi)圖
加載路由配置文件
//導入路由表 在application的onCreate中 VpRouter.load(getApplicationContext(),"router.xml");
路由配置文件
<?xml version="1.0" encoding="utf-8" ?> <root> schema-prefix> <prefix>vf://</prefix> <prefix>vipjr://</prefix> <prefix>vpjr://</prefix> </schema-prefix> <default-webview>vpjr://h6.page</default-webview> <rule> <schema>vpjr://h6.page</schema> <!--<action>webview</action>--> <class>com.vip.hybrid.h6container.H5WebViewActivity</class> </rule> <rule> <schema>vpjr://h6.page.pay</schema> <!--<action>webview</action>--> <class>com.vip.vpal.paydesk.support.h6.H5ContainerActivity</class> </rule> <rule> <schema>vpjr://paycode.entry</schema> <!--<action>1111</action>--> <class>com.vip.vpal.paycode.presentation.activity.PaymentEntryActivity</class> </rule> <rule> <schema>vpjr://guide</schema> <!--<action>basemodule.test.mainactivity</action>--> <class>com.vip.vf.android.GuideActivity</class> </rule> </root>
schema-prefix: 前綴
default-webview: 默認webview的schema
每一個(gè)rule節點(diǎn)代表一組路由規則,被解析成Rule對象
使用示例
//啟動(dòng)url 默認的webview VpRouter.get().context(this).jump("http://www.vip.com?web_title=唯品會(huì )"); //指定webview啟動(dòng) VpRouter.get().context(this).webView("vpjr://h6.page.pay").jump("http://www.vip.com"); //最復雜的使用 VpRouter.get() .context(this) .setInterceptor(new IRouterInterceptor() { @Override public boolean cancel() { return false;//return true 會(huì )把本次跳轉攔截掉 } @Override public Bundle addExtras() { return null;//返回Bundle 會(huì )添加到Intent中 } }) .setResultCallback(new IRouterResultCallback() { @Override public void onSuccess() { //跳轉成功的回調 } @Override public void onFail(RouterError error) { //跳轉失敗的回調 LogUtils.d("error:"+error); } }) .extra("key","value") .extra("key2","value2") .flags(Intent.FLAG_ACTIVITY_SINGLE_TOP) .jump("vf://paycode.entry?title=1111");//支持url傳參 //最簡(jiǎn)單的使用 VpRouter.get().context(this).jump("vpjr://guide"); VpRouter.get().context(this).jumpForResult("vpjr://guide",REQUEST_CODE);//REQUEST_CODE>;
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自互聯(lián)網(wǎng)轉載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權請聯(lián)系QQ:712375056 進(jìn)行舉報,并提供相關(guān)證據,一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容。
Copyright ? 2009-2021 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 珠海市特網(wǎng)科技有限公司 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站