美文网首页Android
【Android开发实战】组件化开发路由的设计实践

【Android开发实战】组件化开发路由的设计实践

作者: 像程序那样去思考 | 来源:发表于2023-04-14 22:17 被阅读0次

调研了一下目前的路由框架,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(结果回调)

类图

image.png

加载路由配置文件

//导入路由表 在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://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对象

使用示例

//启动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 ;

以上就是本文的全部内容,希望对大家的学习有所帮助。

相关文章

  • Android 组件化开发实践

    Android组件化开发实践(一):为什么要进行组件化开发?Android组件化开发实践(二):组件化架构设计An...

  • Gradle实战——组件化的gradle build优化

    组件化gradle build优化 关于组件化,大家可以看我之前的文章,Android组件化开发实战[https:...

  • 框架封装

    Android 组件化 —— 路由设计最佳实践 业界最简单高效的路由方案 OkDeepLink被人忽视的面向对象的...

  • kotlin完成的项目

    项目是基于kotlin写的: Android 端: 1.使用组件化模块开发基于阿里ARouter封装的组件路由调用...

  • android组件化开发资料

    1、Android组件化开发实践 2、Android架构思考(模块化、多进程) 3、糯米移动组件架构演进之路 4、...

  • Android组件化

    Android 得到app 彻底组件化方案实践 CC:可关联生命周期的android组件化开发框架 美团猫眼电影a...

  • Router方案说明

    前言 该方案是阐述Android平台组件化方案设计中Router 组件的的设计思路。针对猫窝科技组件化开发工作,进...

  • 聊聊组件化开发

    如果你在京东图书频道搜索 组件化 或者 组件化开发,显示的几乎都是 Android组件化开发 或者 Android...

  • 手写ARouter路由框架

    这里我不阐述ARouter,组件化的作用和使用方式,大家可以自行百度。android组件化开发实战 思路一 我们可...

  • HTML5技术分享angular开发应用实现

    组件异步路由 angular实现 在开发Angular2应用时,像组件设计、路由设计以外,对于一个较大型的应用,我...

网友评论

    本文标题:【Android开发实战】组件化开发路由的设计实践

    本文链接:https://www.haomeiwen.com/subject/uwvtjdtx.html