public void process(Postcard postcard, InterceptorCallback callback) {
String path = postcard.getPath();
if (postcard.getExtra() == Configs.NEED_LOGIN_INTERCEPTOR) {
if (LoginUtils.isLogin()) {
callback.onContinue(postcard);
}else {
LogUtils.e("LoginInterceptor","拦截" + path);
ARouter.getInstance().build(MyRouter.LOGIN_ACTIVITY).navigation(context, new NavigationCallback() {
@Override
public void onFound(Postcard postcard) {
LogUtils.e("LoginInterceptor","onFound" + postcard.getPath());
}
@Override
public void onLost(Postcard postcard) {
LogUtils.e("LoginInterceptor","onLost" + postcard.getPath());
}
@Override
public void onArrival(Postcard postcard) {
LogUtils.e("LoginInterceptor","onArrival" + postcard.getPath());
}
@Override
public void onInterrupt(Postcard postcard) {
LogUtils.e("LoginInterceptor","onInterrupt" + postcard.getPath());
}
});
}
}else {
LogUtils.e("LoginInterceptor","直接进入" + path);
callback.onContinue(postcard);
}
}`
这是拦截登录的代码,进app首页必须登录,拦截到会跳转到登录页。现在有一个现象,打开app再退出app,循环操作几次就会出现停留在闪屏页的bug。我把跳转回调里也打了log,出现bug的时候log打印了onFound(),没有继续下面的流程。我看日志也没有发现什么错误,请问怎么处理这个问题?
6条答案
按热度按时间flmtquvp1#
试试进入else后回调callback.onInterrupt终止拦截责任链呢
oyjwcjzk2#
请进入else后重新callback.onInterrupt终止拦截责任链呢
我加了greenChannel()和callback.onInterrupt(null),代码:
ARouter.getInstance().build(MyRouter.LOGIN_ACTIVITY).greenChannel().navigation(); callback.onInterrupt(null);
后来没有复现过,但我并不能确定这个问题有没有解决。
tcomlyy63#
加了就没问题了
8tntrjer4#
加了就没问题了
上周五刚给你回复完,周末的时候这个问题又出现了一次。感觉是加了onInterrupt有效果,出现的几率小了,但好像并没有彻底解决问题,所以我现在有的迷茫
xxhby3vn5#
我页碰到这个问题,退出登录后App整个都不能跳转页面了,但是点击事件也进了 process方法, callback.onContinue(postcard);后app就动不了了,咨询下怎样解决这个bug
7xzttuei6#
process执行的线程是子线程,建议切换到主线程进行操作