调研了一下目前的路由框架,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");

路由配置文件

schema-prefix>

vf://

vipjr://

vpjr://

vpjr://h5.page

vpjr://h5.page

com.vip.hybrid.h5container.H5WebViewActivity

vpjr://h5.page.pay

com.vip.vpal.paydesk.support.h5.H5ContainerActivity

vpjr://paycode.entry

com.vip.vpal.paycode.presentation.activity.PaymentEntryActivity

vpjr://guide

com.vip.vf.android.GuideActivity

schema-prefix: 前缀

default-webview: 默认webview的schema

每一个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组件化开发路由的设计实践相关推荐

  1. android 登录组件开发,Android组件化开发路由的设计

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

  2. android系统应用的平台化开发

    android系统应用的平台化开发,一种开发思路,旨在方便平台开发. 在android操作系统中,源码编译生成app,加入带系统签名的app,这些应用都带有系统权限,统一放在了system/app或者 ...

  3. 结构化开发方法--WebApp设计与分析

    说在前面: 本系列文章专注于软考备考复习内容梳理,文章内容是对教材中知识点和考点的提炼,备考过程中可以有针对的进行复习,减少阅读量,有的放矢. 导航目录: 一.WebApp的特性 二.WebApp需求 ...

  4. 【原型化开发】原型设计工具——墨刀

    文章目录 一.概述 二.原型界面展示 一.概述 原型化开发是软件开发的一种常用方法.开发人员对用户提出的问题进行总结,就系统的主要需求取得一致意见后,开发出一个原型并运行之,然后反复对原型进行修改,使 ...

  5. 解读 iOS 组件化与路由的本质

    前言 虽然 iOS 组件化与路由的话题在业界谈了很久,但是貌似很多人都对其有所误解,甚至没搞明白"组件"."模块"."路由"."解 ...

  6. iOS-解读 iOS 组件化与路由的本质

    前言 虽然 iOS 组件化与路由的话题在业界谈了很久,但是貌似很多人都对其有所误解,甚至没搞明白"组件"."模块"."路由"."解 ...

  7. 解读 iOS(马甲包) 组件化与路由的本质

    前言 虽然 iOS 组件化与路由的话题在业界谈了很久,但是貌似很多人都对其有所误解,甚至没搞明白"组件"."模块"."路由"."解 ...

  8. iOS 组件化与路由的本质

    前言 虽然 iOS 组件化与路由的话题在业界谈了很久,但是貌似很多人都对其有所误解,甚至没搞明白"组件"."模块"."路由"."解 ...

  9. Windows10 UWP开发 - 响应式设计

    Windows10 UWP开发 - 响应式设计 原文:Windows10 UWP开发 - 响应式设计 Windows10 UWP开发 - 响应式设计 本篇随笔与大家简单讨论一下在开发适配不同分辨率.宽 ...

最新文章

  1. 打包可执行包_想把你写的Python程序发给别人用?打包成exe啊!
  2. 厦门理工C语言实验报告8,厦门理工c语言数据结构实验
  3. 字符串处理——字典树
  4. SQL Server 2008:示例数据库安装
  5. sql增删改查_5分钟GET全栈开发 - 增删改查的取经之路
  6. GitHub 官方终于要出 App 了!手机上也能改Bug了...
  7. Hvv近期0day总结三
  8. [领卓教育]使用QT实现一个简单的离线词典
  9. 利用循环打印正方形和长方形
  10. 7-85 根据输入的空气污染指数,输出相应的信息。
  11. A-priori算法的简单实现
  12. 奈何心是安定心,命总是流浪命
  13. linux技术--MySQL分区
  14. java nio MappedByteBuffer 文件映射
  15. 10000php换人民币,转 数字转大写人民币
  16. JSON与properties文件的相互转换
  17. 洛谷 P2698 [USACO12MAR]花盆Flowerpot 单调队列
  18. NOI 4.5 动态规划 1980: 陪审团的人选
  19. pfa100_漂莱特PFA100微电子和半导体工业及医药行业超纯水设备树脂
  20. HTML 列表标签、有序列表、无序列表、自定义列表dl dt dd

热门文章

  1. 我的产品经理到CEO之路(三):产品总监
  2. 如何利用AI识别口罩下的人脸?
  3. 深度残差收缩网络看这篇就够了
  4. 使用SIMD指令实现数据库运算(论文阅读笔记)
  5. qiankun微前端中主应用路由页面加载微应用的某个路由页面
  6. 【java】16宫格拼图游戏项目
  7. 西部数码居全球增长最快域名商榜首 爱名网第四
  8. 作为注塑模具工艺人员,这几个知识要知道
  9. Win10《芒果TV》商店版更新v3.2.4:新增跨年事件直播、电视台直播,新年快乐
  10. 虚树(Kindom and its Cities,消耗战)