一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Android - Android組件化開發路由的設計實踐

Android組件化開發路由的設計實踐

2022-02-23 14:48breaktian Android

本篇文章主要介紹了Android組件化開發路由的設計實踐,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

調研了一下目前的路由框架,ARouter(阿里的),ActivityRouter都使用了apt技術 編譯時注解,個人想法是一口吃不成胖子,先做個比較實用的。 VpRouter路由框架主要應用于組件化開發中

設計目的

  1. 解耦
  2. 跨模塊跳轉
  3. 方便服務器配置schema,實現動態配置跳轉目標
  4. 對外部提供遠程訪問的功能,實現跨應用調用響應

主要功能點

  1. 支持intent,http,schema三種跳轉
  2. 路由表支持xml配置,可自定義,支持多路徑
  3. 有攔截器
  4. 同時支持反射和隱式意圖
  5. 支持結果回調
  6. 支持參數傳遞
  7. 鏈式調用
  8. 支持url模式傳參
  9. 支持配置多個webview 實現指定非默認的webview啟動url
  10. 支持配置多個prefix

重要的類

  1. VpRouter 單例模式 入口類
  2. AbsRouter 路由抽象類 主要代碼
  3. RouterTable 路由表
  4. IRouterInterceptor(攔截器) IRouterResultCallback(結果回調)

類圖

Android組件化開發路由的設計實踐

加載路由配置文件

?
1
2
//導入路由表 在application的onCreate中
VpRouter.load(getApplicationContext(),"router.xml");

路由配置文件

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?xml version="1.0" encoding="utf-8" ?>
<root>
  schema-prefix>
    <prefix>vf://</prefix>
    <prefix>vipjr://</prefix>
    <prefix>vpjr://</prefix>
  </schema-prefix>
  <default-webview>vpjr://h5.page</default-webview>
  <rule>
    <schema>vpjr://h5.page</schema>
    <!--<action>webview</action>-->
    <class>com.vip.hybrid.h5container.H5WebViewActivity</class>
  </rule>
  <rule>
    <schema>vpjr://h5.page.pay</schema>
    <!--<action>webview</action>-->
    <class>com.vip.vpal.paydesk.support.h5.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>
  1. schema-prefix: 前綴
  2. default-webview: 默認webview的schema
  3. 每一個rule節點代表一組路由規則,被解析成Rule對象

使用示例

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
//啟動url 默認的webview
VpRouter.get().context(this).jump("http://www.vip.com?web_title=唯品會");
//指定webview啟動
VpRouter.get().context(this).webView("vpjr://h5.page.pay").jump("http://www.vip.com");
 
//最復雜的使用
VpRouter.get()
    .context(this)
    .setInterceptor(new IRouterInterceptor() {
      @Override
      public boolean cancel() {
        return false;//return true 會把本次跳轉攔截掉
      }
 
      @Override
      public Bundle addExtras() {
        return null;//返回Bundle 會添加到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傳參
 
//最簡單的使用
VpRouter.get().context(this).jump("vpjr://guide");
VpRouter.get().context(this).jumpForResult("vpjr://guide",REQUEST_CODE);//REQUEST_CODE>;

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://segmentfault.com/a/1190000014910951

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 91桃色污 | 日韩 视频在线播放 | 美女张开腿黄网站免费精品动漫 | 无码一区国产欧美在线资源 | 亚洲成人网导航 | 国产一区精品视频 | 国产一区二区三区欧美精品 | 荡娃艳妇有声小说 | 513热点| 扒开放荡老师裙子猛烈的进入 | 成人国产一区 | 亚洲AV无码乱码国产麻豆穿越 | 久久国产精品免费网站 | 亚洲va欧美va国产综合久久 | 四虎影视在线观看永久地址 | 美女用屁股把人吞进肚子 | 免费网站直接进入 | 美女乳液 | 国产 日韩 欧美 综合 | 石原莉奈被店长侵犯免费 | 亚洲精品视频在线免费 | 免费高清资源黄网站在线观看 | 精品亚洲视频在线观看 | 国产经典一区二区三区蜜芽 | 欧美日韩国产一区二区三区在线观看 | 国产愉拍精品视频手机 | 免费看a视频 | 麻豆天美精东果冻传媒在线 | 色人阁图片 | 国产区综合另类亚洲欧美 | 夫妻性生活免费在线观看 | 亚洲欧美精品天堂久久综合一区 | 亚洲不卡视频在线 | 日本中文字幕永久在线 | 成全动漫视频在线观看 | 91天堂在线视频 | 男男互操文 | 欧美整片完整片视频在线 | 久久久久免费视频 | 99亚洲 | 舔小说|