前言
上一篇文章我们讲了 登录拦截的优雅实现 的最核心代码
现在我们来讲一下基于他的拓展:绿色通道
什么是绿色通道
在讲这个概念之前,我们先回头看一下之前的核心代码
可以发现,每次跳转之前都会判断有没有登录
如果一些页面压根就不需要登录,硬引导去登录,那这个登录拦截器说白了,残一半
所以说,我们需要添加一个绿色通道,说白了就是一个标记,有了绿色通道就不进行拦截
这里默认需要登录的页面比不需要的多,如果你的 app 需要登录的页面少,那么你可以把拦截器里面的判断反过来写
所以我们修改 BaseActivity 中拦截器的代码
/**
* 绿色通道
*/
var isGreenChannel = false
override fun startActivity(intent: Intent?) {
super.startActivity(
if (isGreenChannel) {
intent
} else {
if (isLogin()) {
intent
} else {
intent?.putExtra(KeyUtils.TARGET_ACTIVITY, intent.component?.className)
?.setClass(this, LoginActivity::class.java)
}
}
)
}
这样在发起跳转之前,只需要将 isGreenChannel 赋值为 true,就可以跳过拦截器的拦截
isGreenChannel = true
startActivity(Intent(context,
SettingActivity::class.java).putExtra(KeyUtils.VALUE, "哈哈哈"))
系列文章
- 登录拦截的优雅实现
- 绿色通道问题
- 不登录直接返回跳转目标页面问题
- 跳转传值回传问题
- 以及一些暂未发现,后续发现或者读者提出的新问题补充进此列表
关注这个公众号,我们聊聊别的,一起搞钱。