网站首页 > 开源技术 正文
不积硅步,无以至千里。不积小流,无以成江海。
今天我们来一起学习一下,如何使用ARouter的路由拦截功能实现判断用户是否登录。
随着软件功能不断地丰富,越来越多的软件开发都用上了组件化架构,既能将不同业务区分开来,也能复用其他业务模块。而不同组件之间的通信大多数采用了阿里的开源路由框架-ARouter,关于ARouter的配置,请查看我的上一篇文章《Android最好用的路由框架》。
路由拦截:
相信很多软件开发者都会遇到下面类似这样的业务需求:
用户其实只是想做个发布操作,但是必须要登陆。通常的做法就是在用户跳转发布页面前进行登陆判断。基本上在每个需要登陆的操作前都需要进行登陆判断,这就会导致项目中到处都是登陆判断。同样的判断逻辑写了很多遍。怎么才能避免重复逻辑出现呢,其实ARouter早就给我们提供好了。
在我们使用ARouter路由跳转时,ARouter会在路由跳转过程中做了拦截处理只不过这个拦截需要我们自己去实现,一般只需要实现 IInterceptor和NavigationCallback两个接口。
// name 可以自定义,priority优先级
@Interceptor(name = "login", priority = 8)
class LoginInterceptorImpl :IInterceptor {
override fun init(context: Context?) {
Log.i("TAGss", "onInterrupt: init ")
}
override fun process(postcard: Postcard?, callback: InterceptorCallback?) {
val path = postcard?.path
// 获取到路由path。进行拦截处理。这里if中可以进行登陆判断。就可以全局拦截
if (false){
callback?.onInterrupt(null) //没有登陆
}else{
callback?.onContinue(postcard) //已经登陆
}
}
}
class LoginNavigationCallbackImpl:NavigationCallback {
override fun onFound(postcard: Postcard?) {
Log.i("TAGss", "LoginNavigationCallbackImpl: onFound ")
}
override fun onLost(postcard: Postcard?) {
Log.i("TAGss", "LoginNavigationCallbackImpl: onLost ")
}
override fun onArrival(postcard: Postcard?) {
Log.i("TAGss", "LoginNavigationCallbackImpl: onArrival ")
}
override fun onInterrupt(postcard: Postcard?) {
Log.i("TAGss", "onInterrupt: 请先登录 ")
//跳转到登陆界面。
ARouter.getInstance().build(ArouterContains.Login).navigation()
}
}
那我们在使用跳转的时候只需要加上这个LoginNavigationCallbackImpl实现类就行。
ARouter.getInstance().build(ArouterContains.DESIGN_MODEL).
navigation(this,LoginNavigationCallbackImpl())
这样ARouter默认在跳转的时候会拦截路由进行登陆判断,我们只需要在需要登陆的路由添加这个实现类就可以,不用再每次手动写登陆判断代码。
今天是不是又学习到了一个小知识呢?,如果对您有帮助,请在下方点击关注,一起学习进步。
猜你喜欢
- 2024-09-14 无线网络大讲堂:带你一起认识802.11ad
- 2024-09-14 蒲公英智能组网路由器X3A组网流程介绍和实际应用举例
- 2024-09-14 百元路由器就能实现异地组网,远程管理的全千兆路由器-蒲公英X3A
- 2024-09-14 蒲公英X3A路由器,零基础解决异地组网难的问题
- 2024-09-14 智能组网的便捷恐怕只有微信运动才知道!蒲公英R300A路由器体验
- 2024-09-14 企业级路由器和普通路由器,同属路由器,却有三个重要区别
- 2024-09-14 如何把路由器当成交换机用?(怎么将路由器当交换机用)
- 2024-09-14 请教家里路由器A和路由器B的相互通讯问题
- 2024-09-14 一张网卡同时上内外网,终于实现了我的愿望,其实方法太简单了
- 2024-09-14 「基础7」路由器标准静态路由的配置
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)