-
Notifications
You must be signed in to change notification settings - Fork 69
RouterInterceptor 详解
Wiki edited this page Sep 8, 2019
·
1 revision
拦截器是 GRouter 非常重要的组成之一,可以用于初始化资源,服务降级,异常处理等。
@RouterInterceptor
class AppRouterInterceptor : GRouterInterceptor() {
override fun init(context: Context, buildType: String?, params: MutableMap<String, Any>?) {
super.init(context, buildType, params)
}
override fun process(request: ActivityRequest): Boolean {
return super.process(request)
}
override fun process(request: TaskRequest): Boolean {
return super.process(request)
}
override fun process(request: ComponentRequest): Boolean {
return super.process(request)
}
override fun onError(request: ActivityRequest, exception: Exception): Boolean {
return super.onError(request, exception)
}
override fun onError(request: TaskRequest, exception: Exception): Boolean {
return super.onError(request, exception)
}
override fun onError(request: ComponentRequest, exception: Exception): Boolean {
return super.onError(request, exception)
}
}
init 方法可以用于初始化资源文件等方法,可以根据用户的实际使用情况多次调用。
执行服务调用之前会先调用 process,可以在此中断、修复当前的请求。
当服务调用出错会调用onError方法,可以在此修正当前的请求,让服务继续进行,通常用于单Module调试、或者处理异常,提高APP可用性。
// 可以传入构造器或者实现,页面跳转或服务获取会继续进行
request.onContinue()
// 中断当前的页面跳转,或者让服务获取异常
request.onInterrupt()
调用服务 - process - 执行调用服务 - (异常 onError) - 结束