Skip to content

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()

init 方法可以用于初始化资源文件等方法,可以根据用户的实际使用情况多次调用。

process

执行服务调用之前会先调用 process,可以在此中断、修复当前的请求。

onError

当服务调用出错会调用onError方法,可以在此修正当前的请求,让服务继续进行,通常用于单Module调试、或者处理异常,提高APP可用性。

Request 控制
// 可以传入构造器或者实现,页面跳转或服务获取会继续进行
request.onContinue()
// 中断当前的页面跳转,或者让服务获取异常
request.onInterrupt()

流程

调用服务 - process - 执行调用服务 - (异常 onError) - 结束

Clone this wiki locally