Android组件化开发路由的示例分析

这篇文章主要介绍了Android组件化开发路由的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

创新互联长期为上千多家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为正阳企业提供专业的成都网站制作、网站建设,正阳网站改版等技术服务。拥有十多年丰富建站经验和众多成功案例,为您定制开发。

设计目的

  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组件化开发路由的示例分析

加载路由配置文件

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

路由配置文件



  schema-prefix>
    vf://
    vipjr://
    vpjr://
  
  vpjr://h6.page
  
    vpjr://h6.page
    
    com.vip.hybrid.h6container.H5WebViewActivity
  
  
    vpjr://h6.page.pay
    
    com.vip.vpal.paydesk.support.h6.H5ContainerActivity
  
  
    vpjr://paycode.entry
    
    com.vip.vpal.paycode.presentation.activity.PaymentEntryActivity
  
  
    vpjr://guide
    
    com.vip.vf.android.GuideActivity
  
  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://h6.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组件化开发路由的示例分析
分享链接:http://hbruida.cn/article/gicige.html