Android 使用ARouter 实现登录拦截

引言

App都是由大量的页面构成,部分页面用户可以以游客身份进行浏览,但是还有部分页面大都需要用户登录后才可以浏览。这时候就需要判断当前用户是否登录,如果用户未登录,则需要先登录;如果用户已经登录,则可以直接跳转。类似实现方式如下:

    if(LoginUtils.getInstance().isLogin()){
        startActivity(new Intent(context,DetailActivity.class));
    }else{
        startActivity(new Intent(context,LoginActivity.class));
    }
复制代码

但是如果一个App有大量的页面进入的先行条件都是用户已经登录,这样就容易造成大量的代码冗余,不易后期维护,我们可以通过AOP实现方式来处理。由于项目中使用了ARouter路由框架,可以通过其拦截器来处理这个问题。

通过ARouter IInterceptor实现登录拦截

拦截器

@Interceptor(priority = 8, name = "login")
public class LoginInterceptorImpl implements IInterceptor {

    @Override
    public void process(Postcard postcard, InterceptorCallback callback) {
        String path = postcard.getPath();
        LogUtils.d(path);
        boolean isLogin = SPUtils.getInstance().getBoolean(Constant.SP_IS_LOGIN, false);
        if(isLogin){
            callback.onContinue(postcard);
        }else{
            switch (path){
                // 需要登录的直接进入这个页面
                case PageRouter.TEST_A:
                case PageRouter.TEST_B:
                    callback.onInterrupt(null);
                    break;
                // 不需要登录的直接拦截下来
                default:
                    callback.onContinue(postcard);
                    break;
            }
        }
    }

    @Override
    public void init(Context context) {

    }
}
复制代码

跳转

public class LoginNavigationCallbackImpl implements NavigationCallback {
    @Override
    public void onFound(Postcard postcard) {

    }

    @Override
    public void onLost(Postcard postcard) {

    }

    @Override
    public void onArrival(Postcard postcard) {

    }

    @Override
    public void onInterrupt(Postcard postcard) {
        String path = postcard.getPath();
        Bundle bundle = postcard.getExtras();
        ARouter.getInstance().build(PageRouter.MINE_LOGIN)
                .with(bundle)
                .withString("path", path)
                .navigation();
    }
}

最后

如果你看到了这里,觉得文章写得不错就给个赞呗!欢迎大家评论讨论!如果你觉得那里值得改进的,请给我留言。一定会认真查询,修正不足,定期免费分享技术干货。喜欢的小伙伴可以关注一下哦。谢谢!

发布了289 篇原创文章 · 获赞 30 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_45365889/article/details/102610680