美文网首页
Android 路由(Router)

Android 路由(Router)

作者: 潇洒人生_cca2 | 来源:发表于2020-04-05 10:40 被阅读0次

    在Android开发中,最常见也是最常用的功能就是页面的跳转,我们经常需要面对从浏览器或者其他App跳转到自己App中页面的需求,不过就算是简简单单的页面跳转,随着时间的推移,也会遇到一些问题:

    (1)集中式的URL管理:谈到集中式的管理,总是比较蛋疼,多人协同开发的时候,大家都去AndroidManifest.xml中定义各种IntentFilter,使用隐式Intent,最终发现AndroidManifest.xml中充斥着各种Schame,各种Path,需要经常解决Path重叠覆盖、过多的Activity被导出,引发安全风险等问题

    (2)可配置性较差:Manifest限制于xml格式,书写麻烦,配置复杂,可以自定义的东西也较少

    (3)跳转过程中无法插手:直接通过Intent的方式跳转,跳转过程开发者无法干预,一些面向切面的事情难以实施,比方说登录、埋点这种非常通用的逻辑,在每个子页面中判断又很不合理,毕竟activity已经实例化了

    (4)跨模块无法显式依赖:在App小有规模的时候,我们会对App做水平拆分,按照业务拆分成多个子模块,之间完全解耦,通过打包流程控制App功能,这样方便应对大团队多人协作,互相逻辑不干扰,这时候只能依赖隐式Intent跳转,书写麻烦,成功与否难以控制。

    为了解决以上问题,我们需要一款能够解耦、简单、功能多、定制性较强、支持拦截逻辑的路由组件:我们选择了Alibaba的ARouter,ARouter是阿里巴巴开源出来的一款Android路由框架。

    功能介绍

    1.添加依赖和注解

    apply plugin: 'com.neenbedankt.android-apt'

    2.添加注解

    // 在支持路由的页面、服务上添加注解(必选)

    // 这是最小化配置,后面有详细配置

    @Route(path ="/test/1")

    public class YourActivity extend Activity{    ... }

    3.初始化SDK

    ARouter.init(mApplication);// 尽可能早,推荐在Application中初始化

    4.发起路由操作

    // 1. 应用内简单的跳转(通过URL跳转在'中阶使用'中)

    ARouter.getInstance().build("/test/1").navigation();

    // 2. 跳转并携带参数

    ARouter.getInstance().build("/test/1")

    .withLong("key1",666L)

    .withString("key3","888")

    .navigation();

    5.通过URL跳转

    // 新建一个Activity用于监听Schame事件

    // 监听到Schame事件之后直接传递给ARouter即可

    // 也可以做一些自定义玩法,比方说改改URL之类的

    // http://www.example.com/test/1

    public classSchameFilterActivityextendsActivity {

    @Override

    protected voidonCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    // 外面用户点击的URL

    Uri uri = getIntent().getData();

    // 直接传递给ARouter即可

    ARouter.getInstance().build(uri).navigation();

    finish();

    }

    }

    6.

    相关文章

      网友评论

          本文标题:Android 路由(Router)

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