软件简介

WMRouter是一款Android路由框架,基于组件化的设计思路,有功能灵活、使用简单的特点。

功能简介

WMRouter主要提供URI分发、ServiceLoader两大功能。

URI分发功能可用于多工程之间的页面跳转、动态下发URI链接的跳转等场景,特点如下:

  1. 支持多scheme、host、path

  2. 支持URI正则匹配

  3. 页面配置支持Java代码动态注册,或注解配置自动注册

  4. 支持配置全局和局部拦截器,可在跳转前执行同步/异步操作,例如定位、登录等

  5. 支持单次跳转特殊操作:Intent设置Extra/Flags、设置跳转动画、自定义StartActivity操作等

  6. 支持页面Exported控制,特定页面不允许外部跳转

  7. 支持配置全局和局部降级策略

  8. 支持配置单次和全局跳转监听

  9. 完全组件化设计,核心组件均可扩展、按需组合,实现灵活强大的功能

适用场景

WMRouter适用但不限于以下场景:

  1. Native+H5混合开发模式,需要进行页面之间的互相跳转,或进行灵活的运营跳转链接下发。可以利用WMRouter统一页面跳转逻辑,根据不同的协议(HTTP、HTTPS、用于Native页面的自定义协议)跳转对应页面,且在跳转过程中可以使用UriInterceptor对跳转链接进行修改,例如跳转H5页面时在URL中加参数。

  2. 统一管理来自App外部的URI跳转。来自App外部的URI跳转,如果使用Android原生的Manifest配置,会直接启动匹配的Activity,而很多时候希望先正常启动App打开首页,完成常规初始化流程(例如登录、定位等)后再跳转目标页面。此时可以使用统一的Activity接收所有外部URI跳转,到首页时再用WMRouter启动目标页面。

  3. 页面跳转有复杂判断逻辑的场景。例如多个页面都需要先登录、先定位后才允许打开,如果使用常规方案,这些页面都需要处理相同的业务逻辑;而利用WMRouter,只需要开发好UriInterceptor并配置到各个页面即可。

  4. 多工程、组件化、平台化开发。多工程开发要求各个工程之间能互相通信,也可能遇到和外卖App类似的代码复用、依赖注入、编译等问题,这些问题都可以利用WMRouter的URI分发和ServiceLoader模块解决。

  5. 对业务埋点需求较强的场景。页面跳转作为最常见的业务逻辑之一,常常需要埋点。给每个页面配置好URI,使用WMRouter统一进行页面跳转,并在全局的OnCompleteListener中埋点即可。

  6. 对App可用性要求较高的场景。一方面,可以对页面跳转失败进行埋点监控上报,及时发现线上问题;另一方面,页面跳转时可以执行判断逻辑,发现异常(例如服务端异常、客户端崩溃等)则自动打开降级后的页面,保证关键功能的正常工作,或给用户友好的提示。

  7. 页面A/B测试、动态配置等场景。在WMRouter提供的接口基础上进行少量开发配置,就可以实现:根据下发的A/B测试策略跳转不同的页面实现;根据不同的需要动态下发一组路由表,相同的URI跳转到不同的一组页面(实现方面可以自定义UriInterceptor,对匹配的URI返回301的UriResult使跳转重定向)。

    URI 跳转核心设计思路与接口

    下图展示了WMRouter中URI跳转的核心设计思路

    展开阅读全文

    代码

    的 Gitee 指数为
    超过 的项目

    评论 (0)

    加载中
    更多评论
    暂无内容
    发表了博客
    2018/08/24 10:06

    WMRouter:美团外卖Android开源路由框架

    ![](https://user-gold-cdn.xitu.io/2018/8/24/16569a31307c96ea?w=1818&h=527&f=png&s=16900) WMRouter是一款Android路由框架,基于组件化的设计思路,功能灵活,使用也比较简单。 WMRouter最初用于解决美团外卖C端App在业务演进过程中的实际问题,之后逐步推广到了美团其他App,因此我们决定将其开源,希望更多技术同行一起开发,应用到更广泛的场景里去。Github项目地址与使用文档详见 [https://github.com/meituan/WMRouter...

    0
    2
    发表了博客
    2018/12/24 10:37

    Android组件化方案及组件消息总线modular-event实战

    # 背景 组件化作为Android客户端技术的一个重要分支,近年来一直是业界积极探索和实践的方向。美团内部各个Android开发团队也在尝试和实践不同的组件化方案,并且在组件化通信框架上也有很多高质量的产出。最近,我们团队对美团零售收银和美团轻收银两款Android App进行了组件化改造。本文主要介绍我们的组件化方案,希望对从事Android组件化开发的同学能有所启发。 ## 为什么要组件化 近年来,为什么这么多团队要进行组件化实践...

    1
    2
    发表了博客
    2019/12/05 20:35

    Java SPI机制:ServiceLoader实现原理及应用剖析

    一、背景 SPI,全称Service Provider Interfaces,服务提供接口。是Java提供的一套供第三方实现或扩展使用的技术体系。主要通过解耦服务具体实现以及服务使用,使得程序的可扩展性大大增强,甚至可插拔。 基于服务的注册与发现机制,服务提供者向系统注册服务,服务使用者通过查找发现服务,可以达到服务的提供与使用的分离,甚至完成对服务的管理。 JDK中,基于SPI的思想,提供了默认具体的实现,ServiceLoader。利用JDK自带的...

    0
    0
    2019/11/21 11:11

    美团点评技术与算法文章汇总,设计算法、前后端、客户端、小程序等

    这是一份福利贴,先看内容,再看获取方式。 算法文章汇总目录: - 美团“猜你喜欢”深度学习排序模型实践 - 美团大脑:知识图片的建模方法及其应用 - 深度学习在美团搜索广告排序的应用实践 - 美团深度学习系统的工程实践 - 美团餐饮娱乐知识图谱——美团大脑揭秘 - 美团在O2O场景下的广告营销 - 美团外卖骑手背后的AI技术 - 基于TensorFlow Serving的深度学习在线评估 - 强化学习在美团“猜你喜欢的实践” - 深度学习在文本领域...

    0
    0
    发表于大前端专区
    2021/01/14 08:40

    从新手到架构师,一篇就够!Android组件化最全开源项目(美团App、得到App、支付宝App、微信App、蘑菇街App..)

    背景 组件化作为Android客户端技术的一个重要分支,近年来一直是业界积极探索和实践的方向。每个大厂内部的各个Android开发团队也在尝试和实践不同的组件化方案,并且在组件化通信框架上也有很多高质量的产出。本文主要介绍我们的组件化方案,希望对从事Android组件化开发的同学能有所启发。 为什么要组件化 近年来,为什么这么多团队要进行组件化实践呢?组件化究竟能给我们的工程、代码带来什么好处?我们认为组件化能够带来两...

    0
    0
    2021/01/04 14:21

    GitHub标星8k,字节跳动高工熬夜半月整理的“组件化实战学习手册”,全是精髓!

    ##前言 ### 什么是组件化? 最初的目的是代码重用,功能相对单一或者独立。在整个系统的代码层次上位于最底层,被其他代码所依赖,所以说组件化是纵向分层。 ### 为什么要使用组件化? 当我们的项目越做越大的时候,有时间就很难去维护,有时候让我们去改点东西,根本实现不了,与其让我们修修改改,还不如自己重新去写代码。 其实无论是大项目也好,或者是中小型项目也好,如果去使用组件化进行开发,那会使你很难割舍,因为它能在...

    0
    0
    发表于大前端专区
    2019/11/27 13:56

    面试官,怎样实现 Router 框架?

    Android 开发中,组件化,模块化是一个老生常谈的问题。随着项目复杂性的增长,模块化是一个必然的趋势。除非你能忍受改一下代码,就需要六七分钟的漫长时间。 模块化,组件化随之带来的另外一个问题是页面的跳转问题,由于代码的隔离,代码之间有时候会无法互相访问。于是,路由(Router)框架诞生了。 目前用得比较多的有阿里的 ARouter,美团的 WMRouter,ActivityRouter 等。 今天,就让我们一起来看一下怎样实现一个路由框...

    0
    0
    发表了博客
    2019/06/03 23:58

    滴滴Booster移动APP质量优化框架 学习之旅

    推荐阅读: 滴滴Booster移动App质量优化框架-学习之旅 一 Android 模块Api化演练 不一样视角的Glide剖析(一) 一、Booster简介 Booster是滴滴最近开源一个的移动应用质量优化框架项目,专门为移动应用而设计的简单易用、轻量级、功能强大且可扩展的质量优化工具包,其通过动态发现和加载机制提供可扩展的能力。不过目前优化的功能点不过。 Booster 主要由 Transformer 和 Task 组成,Transformer 主要用于对字节码进行扫描或修改...

    0
    0
    没有更多内容
    加载失败,请刷新页面
    点击加载更多
    加载中
    下一页
    暂无内容
    0 评论
    24 收藏
    分享
    OSCHINA
    登录后可查看更多优质内容
    返回顶部
    顶部