android arouter加跳转动画,Android路由跳转-ARouter框架

ARouter框架图

11977fe3abca?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

框架图

APT注解

编译时使用APT技术处理@Router/@Interceptor/@Autowire三个注解

11977fe3abca?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

流程图

Activity跳转流程

11977fe3abca?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

流程图

1.首先调用LogisticsCenter.completion完成postcard的补充。

2.然后如果有回调函数就进行回调。

3.如果需要拦截,就进行拦截器的处理,否则就调用_navigation方法。

所有的Url/Intent跳转信息都使用Postcard邮戳进行信息封装。

Warehouse

存储跳转Path所对应的activity/fragment/url/provider,通过APT解析出来的映射关系存储在Warehouse中。

LogisticsCenter

负责解析注解并构造Postcard。以懒加载的方式从Warehouse中获取信息,包括class/url/extras/params等跳转信息。构造Postcard的信息储存对象为HashMap形式的RouteMeta。

_ARouter

负责根据Postcard进行页面跳转。Native采用startActivity形式。

处理 H5/Fragment/IProvider服务等其它类型

处理H5跳转时,通过注册一个没有UI的界面来统一处理scheme是arouter的跳转请求。在清单文件中声明一个activity,这个activity不需要页面,通过intent-filter隐式跳转用来统一获取url请求,然后再交给路由框架进行跳转。

ARouter发现服务有两种方式,ByName通过传递Path路径来发现,ByType通过服务class来查找。

IProvider和Fragment都是先反射构造实例再进行跳转,Activity为直接通过PATH跳转。

依赖注入

@AutoWired依赖注入字段的实现

11977fe3abca?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

拦截器

拦截器的拦截过程就是在线程池中从仓库里依次取出拦截器实例进行拦截。

拦截器的初始化过程是在线程池中进行,为了是拦截器可能耗时的问题。拦截器可设置超时时间,通过CountLatchDown同步计数类来控制多个拦截器的执行超时。

降级策略

当跳转目标路径找不到等原因导致跳转失败时,可采用单独或全局的降级方式,比如通过加载H5处理错误情况等。

ARouter提供的降级策略主要有两种方式,一种是通过回调的方式;一种是提供服务接口的方式。

1.通过NavCallback接口的onLost方法,当没找到目的页面时进行单独降级。

2.通过 DegradeService服务接口的onLost方法进行全局降级。

protected Object navigation(final Context context, final Postcard postcard, final int requestCode, final NavigationCallback callback) {

try {

LogisticsCenter.completion(postcard);

} catch (NoRouteFoundException ex) {

if (null != callback) {

callback.onLost(postcard);

} else { // No callback for this invoke, then we use the global degrade service.

DegradeService degradeService = ARouter.getInstance().navigation(DegradeService.class);

if (null != degradeService) {

degradeService.onLost(context, postcard);

}

}

return null;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值