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

相关文章

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手动安装安装特定版本查看日志在

SpringCloud之LoadBalancer负载均衡服务调用过程

《SpringCloud之LoadBalancer负载均衡服务调用过程》:本文主要介绍SpringCloud之LoadBalancer负载均衡服务调用过程,具有很好的参考价值,希望对大家有所帮助,... 目录前言一、LoadBalancer是什么?二、使用步骤1、启动consul2、客户端加入依赖3、以服务

Vue 调用摄像头扫描条码功能实现代码

《Vue调用摄像头扫描条码功能实现代码》本文介绍了如何使用Vue.js和jsQR库来实现调用摄像头并扫描条码的功能,通过安装依赖、获取摄像头视频流、解析条码等步骤,实现了从开始扫描到停止扫描的完整流... 目录实现步骤:代码实现1. 安装依赖2. vue 页面代码功能说明注意事项以下是一个基于 Vue.js

讯飞webapi语音识别接口调用示例代码(python)

《讯飞webapi语音识别接口调用示例代码(python)》:本文主要介绍如何使用Python3调用讯飞WebAPI语音识别接口,重点解决了在处理语音识别结果时判断是否为最后一帧的问题,通过运行代... 目录前言一、环境二、引入库三、代码实例四、运行结果五、总结前言基于python3 讯飞webAPI语音

Nginx配置系统服务&设置环境变量方式

《Nginx配置系统服务&设置环境变量方式》本文介绍了如何将Nginx配置为系统服务并设置环境变量,以便更方便地对Nginx进行操作,通过配置系统服务,可以使用系统命令来启动、停止或重新加载Nginx... 目录1.Nginx操作问题2.配置系统服android务3.设置环境变量总结1.Nginx操作问题

C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)

《C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)》本文主要介绍了C#集成DeepSeek模型实现AI私有化的方法,包括搭建基础环境,如安装Ollama和下载DeepS... 目录前言搭建基础环境1、安装 Ollama2、下载 DeepSeek R1 模型客户端 ChatBo

Java中将异步调用转为同步的五种实现方法

《Java中将异步调用转为同步的五种实现方法》本文介绍了将异步调用转为同步阻塞模式的五种方法:wait/notify、ReentrantLock+Condition、Future、CountDownL... 目录异步与同步的核心区别方法一:使用wait/notify + synchronized代码示例关键

springboot的调度服务与异步服务使用详解

《springboot的调度服务与异步服务使用详解》本文主要介绍了Java的ScheduledExecutorService接口和SpringBoot中如何使用调度线程池,包括核心参数、创建方式、自定... 目录1.调度服务1.1.JDK之ScheduledExecutorService1.2.spring