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

Android组件化开发路由的设计实践,第1张

概述调研了一下目前的路由框架,ARouter(阿里的),ActivityRouter都使用了apt技术编译时注解,个人想法是一口吃不成胖子,先做个比较实用的。VpRouter路由框架主要应用于组件开发

调研了一下目前的路由框架,ARouter(阿里的),ActivityRouter都使用了apt技术 编译时注解,个人想法是一口吃不成胖子,先做个比较实用的。 VpRouter路由框架主要应用于组件化开发中

设计目的

解耦 跨模块跳转 方便服务器配置schema,实现动态配置跳转目标 对外部提供远程访问的功能,实现跨应用调用响应

主要功能点

支持intent,http,schema三种跳转 路由表支持xml配置,可自定义,支持多路径 有拦截器 同时支持反射和隐式意图 支持结果回调 支持参数传递 链式调用 支持url模式传参 支持配置多个webvIEw 实现指定非默认的webvIEw启动url 支持配置多个prefix

重要的类

VpRouter 单例模式 入口类 AbsRouter 路由抽象类 主要代码 Routertable 路由表 IRouterInterceptor(拦截器) IRouterResultCallback(结果回调)

类图

加载路由配置文件

//导入路由表 在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>
schema-prefix: 前缀 default-webvIEw: 默认webvIEw的schema 每一个rule节点代表一组路由规则,被解析成Rule对象

使用示例

//启动url 默认的webvIEwVpRouter.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 ARouter路由框架解析[Alibaba-ARouter]浅谈简单好用的Android页面路由框架5步教你快速写一个android Router路由框架浅谈关于Android路由的实现Android路由框架Router分析详解 总结

以上是内存溢出为你收集整理的Android组件化开发路由的设计实践全部内容,希望文章能够帮你解决Android组件化开发路由的设计实践所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1142668.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存