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

相关文章

Python调用Orator ORM进行数据库操作

《Python调用OratorORM进行数据库操作》OratorORM是一个功能丰富且灵活的PythonORM库,旨在简化数据库操作,它支持多种数据库并提供了简洁且直观的API,下面我们就... 目录Orator ORM 主要特点安装使用示例总结Orator ORM 是一个功能丰富且灵活的 python O

Java调用DeepSeek API的最佳实践及详细代码示例

《Java调用DeepSeekAPI的最佳实践及详细代码示例》:本文主要介绍如何使用Java调用DeepSeekAPI,包括获取API密钥、添加HTTP客户端依赖、创建HTTP请求、处理响应、... 目录1. 获取API密钥2. 添加HTTP客户端依赖3. 创建HTTP请求4. 处理响应5. 错误处理6.

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

TP-Link PDDNS服将于务6月30日正式停运:用户需转向第三方DDNS服务

《TP-LinkPDDNS服将于务6月30日正式停运:用户需转向第三方DDNS服务》近期,路由器制造巨头普联(TP-Link)在用户群体中引发了一系列重要变动,上个月,公司发出了一则通知,明确要求所... 路由器厂商普联(TP-Link)上个月发布公告要求所有用户必须完成实名认证后才能继续使用普联提供的 D

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

一分钟带你上手Python调用DeepSeek的API

《一分钟带你上手Python调用DeepSeek的API》最近DeepSeek非常火,作为一枚对前言技术非常关注的程序员来说,自然都想对接DeepSeek的API来体验一把,下面小编就来为大家介绍一下... 目录前言免费体验API-Key申请首次调用API基本概念最小单元推理模型智能体自定义界面总结前言最

JAVA调用Deepseek的api完成基本对话简单代码示例

《JAVA调用Deepseek的api完成基本对话简单代码示例》:本文主要介绍JAVA调用Deepseek的api完成基本对话的相关资料,文中详细讲解了如何获取DeepSeekAPI密钥、添加H... 获取API密钥首先,从DeepSeek平台获取API密钥,用于身份验证。添加HTTP客户端依赖使用Jav

redis防止短信恶意调用的实现

《redis防止短信恶意调用的实现》本文主要介绍了在场景登录或注册接口中使用短信验证码时遇到的恶意调用问题,并通过使用Redis分布式锁来解决,具有一定的参考价值,感兴趣的可以了解一下... 目录1.场景2.排查3.解决方案3.1 Redis锁实现3.2 方法调用1.场景登录或注册接口中,使用短信验证码场

oracle如何连接登陆SYS账号

《oracle如何连接登陆SYS账号》在Navicat12中连接Oracle11g的SYS用户时,如果设置了新密码但连接失败,可能是因为需要以SYSDBA或SYSOPER角色连接,解决方法是确保在连接... 目录oracle连接登陆NmOtMSYS账号工具问题解决SYS用户总结oracle连接登陆SYS账号

使用C/C++调用libcurl调试消息的方式

《使用C/C++调用libcurl调试消息的方式》在使用C/C++调用libcurl进行HTTP请求时,有时我们需要查看请求的/应答消息的内容(包括请求头和请求体)以方便调试,libcurl提供了多种... 目录1. libcurl 调试工具简介2. 输出请求消息使用 CURLOPT_VERBOSE使用 C