ARouter 与 IProvider服务调用,IInterceptor登陆拦截

2023-12-23 03:58

本文主要是介绍ARouter 与 IProvider服务调用,IInterceptor登陆拦截,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

参考:

xingfu0809 / ArouterLogin : 基于Arouter的登录拦截

IProvider

base模块 : 定义服务接口
import com.alibaba.android.arouter.facade.template.IProvider;public interface IModuleService extends IProvider {/*** 获取用户名** @return 用户名*/String getUserName();}
user模块 : 实现服务接口
import android.content.Context;import com.alibaba.android.arouter.facade.annotation.Route;@Route(path = "/user/user_service")
public class UserServiceImpl implements IModuleService {@Overridepublic String getUserName() {return "xq";}@Overridepublic void init(Context context) {}
}
video模块 : 调用服务
//通过path调用服务
String userName1 = ((IModuleService) ARouter.getInstance().build("/user/user_service").navigation()).getUserName();//通过类名调用服务
String userName2 = ARouter.getInstance().navigation(IModuleService.class).getUserName();

我们还可以在base中处理,然后在调用:

base模块:

import com.alibaba.android.arouter.launcher.ARouter;public class ModuleServiceFinder {public static String getUserName() {IModuleService iModuleService = ARouter.getInstance().navigation(IModuleService.class);if (iModuleService != null) {return iModuleService.getUserName();}return "";}}

video模块 :调用服务


//通过base调用服务
String userName3 = ModuleServiceFinder.getUserName();

IInterceptor

定义拦截器
import android.content.Context;import com.alibaba.android.arouter.facade.Postcard;
import com.alibaba.android.arouter.facade.callback.InterceptorCallback;
import com.alibaba.android.arouter.facade.template.IInterceptor;public class LoginInterceptorImpl implements IInterceptor {@Overridepublic void process(Postcard postcard, InterceptorCallback callback) {boolean login = UserCenter.isLogin();if (login) {//已登陆不拦截callback.onContinue(postcard);} else {String path = postcard.getPath();switch (path) {//不需要登陆直接进入界面case "/video/main":case "/picture/main":callback.onContinue(postcard);break;default://需要登陆拦截callback.onInterrupt(null);break;}}}@Overridepublic void init(Context context) {}
}
ReadActivity : 需要登陆的界面

ARouter.getInstance().build("/read/main").withString("msg","我是传递到read activity的数据").navigation(this, new NavigationCallback() {//找到了@Overridepublic void onFound(Postcard postcard) {}//找不到了@Overridepublic void onLost(Postcard postcard) {}//跳转成功了@Overridepublic void onArrival(Postcard postcard) {}//被拦截了@Overridepublic void onInterrupt(Postcard postcard) {//跳转到登陆,//把参数和path都传递到登陆页,登陆完成后再跳转String path = postcard.getPath();Bundle extras = postcard.getExtras();ARouter.getInstance().build("/login/main").with(extras).withString("path", path).navigation();}});
LoginActivity : 登陆界面
@Autowired
public String path = "";//登陆后
if (!TextUtils.isEmpty(path)) {ARouter.getInstance()//传递过来的路径.build(path)//传递过来的参数.with(getIntent().getExtras()).navigation();
}
finish();

这篇关于ARouter 与 IProvider服务调用,IInterceptor登陆拦截的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/526629

相关文章

C#如何调用C++库

《C#如何调用C++库》:本文主要介绍C#如何调用C++库方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录方法一:使用P/Invoke1. 导出C++函数2. 定义P/Invoke签名3. 调用C++函数方法二:使用C++/CLI作为桥接1. 创建C++/CL

SpringBoot基于配置实现短信服务策略的动态切换

《SpringBoot基于配置实现短信服务策略的动态切换》这篇文章主要为大家详细介绍了SpringBoot在接入多个短信服务商(如阿里云、腾讯云、华为云)后,如何根据配置或环境切换使用不同的服务商,需... 目录目标功能示例配置(application.yml)配置类绑定短信发送策略接口示例:阿里云 & 腾

springboot项目如何开启https服务

《springboot项目如何开启https服务》:本文主要介绍springboot项目如何开启https服务方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录springboot项目开启https服务1. 生成SSL证书密钥库使用keytool生成自签名证书将

使用Node.js制作图片上传服务的详细教程

《使用Node.js制作图片上传服务的详细教程》在现代Web应用开发中,图片上传是一项常见且重要的功能,借助Node.js强大的生态系统,我们可以轻松搭建高效的图片上传服务,本文将深入探讨如何使用No... 目录准备工作搭建 Express 服务器配置 multer 进行图片上传处理图片上传请求完整代码示例

Spring LDAP目录服务的使用示例

《SpringLDAP目录服务的使用示例》本文主要介绍了SpringLDAP目录服务的使用示例... 目录引言一、Spring LDAP基础二、LdapTemplate详解三、LDAP对象映射四、基本LDAP操作4.1 查询操作4.2 添加操作4.3 修改操作4.4 删除操作五、认证与授权六、高级特性与最佳

springboot filter实现请求响应全链路拦截

《springbootfilter实现请求响应全链路拦截》这篇文章主要为大家详细介绍了SpringBoot如何结合Filter同时拦截请求和响应,从而实现​​日志采集自动化,感兴趣的小伙伴可以跟随小... 目录一、为什么你需要这个过滤器?​​​二、核心实现:一个Filter搞定双向数据流​​​​三、完整代码

Java调用C++动态库超详细步骤讲解(附源码)

《Java调用C++动态库超详细步骤讲解(附源码)》C语言因其高效和接近硬件的特性,时常会被用在性能要求较高或者需要直接操作硬件的场合,:本文主要介绍Java调用C++动态库的相关资料,文中通过代... 目录一、直接调用C++库第一步:动态库生成(vs2017+qt5.12.10)第二步:Java调用C++

JSON Web Token在登陆中的使用过程

《JSONWebToken在登陆中的使用过程》:本文主要介绍JSONWebToken在登陆中的使用过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录JWT 介绍微服务架构中的 JWT 使用结合微服务网关的 JWT 验证1. 用户登录,生成 JWT2. 自定义过滤

在C#中调用Python代码的两种实现方式

《在C#中调用Python代码的两种实现方式》:本文主要介绍在C#中调用Python代码的两种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C#调用python代码的方式1. 使用 Python.NET2. 使用外部进程调用 Python 脚本总结C#调

Linux上设置Ollama服务配置(常用环境变量)

《Linux上设置Ollama服务配置(常用环境变量)》本文主要介绍了Linux上设置Ollama服务配置(常用环境变量),Ollama提供了多种环境变量供配置,如调试模式、模型目录等,下面就来介绍一... 目录在 linux 上设置环境变量配置 OllamPOgxSRJfa手动安装安装特定版本查看日志在