Android 路由(Router)

在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))