ARouter快速上手

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", "被拦截了");
                }
            });

未完待续...

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容