问题说明
最近在学习ARouter路由框架的使用,在书写demo时遇到了一个问题:
拦截器在设置之后没有生效..
设置如下监听方法也不会走到拦截方法,拦截器初始化方法中的log也不会打印:
ARouter.getInstance()
.build(PathUtil.TARGET_ACTIVITY_PATH)
.withBoolean("isInterceptor",true)
.navigation(activity, new NavCallback() {
//调到目标页后调用
@Override
public void onArrival(Postcard postcard) {
Log.d(PathUtil.TAG,"onArrival");
}
//拦截时调用
@Override
public void onInterrupt(Postcard postcard) {
Log.d(PathUtil.TAG,"onInterrupt");
ARouter.getInstance().build(PathUtil.INTERCEPTOR_ACTIVITY_PATH).navigation();
super.onInterrupt(postcard);
}
//拦截前调用
@Override
public void onFound(Postcard postcard) {
Log.d(PathUtil.TAG,"onFound");
super.onFound(postcard);
}
//丢失路由
@Override
public void onLost(Postcard postcard) {
Log.d(PathUtil.TAG,"onLost");
super.onLost(postcard);
}
});
原因分析及解决
考虑到拦截器的init
方法并没有打印log,应该是拦截器初始化失败了,可能是在注册上直接失败造成的。
查看官方文档之后,找到了文档中提到了一个可选的注册插件能够实现路由表的自动加载。
apply plugin: 'com.alibaba.arouter'
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath "com.alibaba:arouter-register:?"
}
}
于是直接将注册插件添加到工程中,运行之后问题已解决。
网友评论