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

最後

如果你看到了這裏,覺得文章寫得不錯就給個讚唄!歡迎大家評論討論!如果你覺得那裏值得改進的,請給我留言。一定會認真查詢,修正不足,定期免費分享技術乾貨。喜歡的小夥伴可以關注一下哦。謝謝!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章