1:对于kolin传参支持
传参数不同于java的地 ,需要@JvmField
@JvmField
@Autowired(name = EXTRA_WEB_URL)
var textInfo: String? = ""
build.gradle 文件
apply plugin: 'kotlin-kapt'
...
kapt {
arguments {
arg("modlename", project.getName())
}
}
...
dependencies {
api 'com.alibaba:arouter-api:1.4.1'
kapt 'com.alibaba:arouter-compiler:1.2.2'
}
2:拦截器(拦截跳转过程,面向切面编程)
参考下面文章,几乎用法都包含了
https://www.jianshu.com/p/c8d7b1379c1b
主要是注意几个点
1 初始化的优先级 priority、init()
2 postcard.getPath().equals("testname")路径获取来做路径判断
3 callback.onContinue的回调事件处理机制
4 回调onInterrupt(Postcard postcard){}非主线程
@Interceptor(priority = 5)
public class Test1Interceptor implements IInterceptor {
@Override
public void process(Postcard postcard, InterceptorCallback callback) {
//拦截跳转,进行一些处理
if (postcard.getPath().equals("/test/test1")) {
//比如打点事件
}
callback.onContinue(postcard);//处理完成,交还控制权
}
@Override
public void init(Context context) {
}
}
NavCallback 回调的几个参数说明:
ARouter.getInstance().build("/test/test1").navigation(this, new NavCallback() {
@Override
public void onFound(Postcard postcard) {
Log.e("testService", "发现可跳转的目标路径");
}
@Override
public void onLost(Postcard postcard) {
Log.e("testService", "路径丢失");
}
@Override
public void onArrival(Postcard postcard) {
//todo可以做关闭页面的操作等等
Log.e("testService", "跳转完了");
}
@Override
public void onInterrupt(Postcard postcard) {
//注意非主线程
Log.e("testService", "被拦截了");
}
});
未完待续...