• ARouter拦截器使用


    序、时间于同样的方式留经我们每个人,每个人却以不同的方式对待时间。

    前言

    一个用于帮助 Android App 进行组件化改造的框架 —— 支持模块间的路由、通信、解耦

    ARouter

    1.AOP

    AOP(Aspect Oriented Programming)面向切面思想,是Spring的三大核心思想之一(AOP-面向切面、IOC-控制反转、DI-依赖注入)

    AOP,一般成为面向切面,作为面向对象OOP的一种补充,用于将那些与业务无关,但却对多个对象产生影响的公共行为和逻辑,抽取并封装为一个可重用的模块,这个模块被命名为“切面”(Aspect),减少系统中的重复代码,降低了模块之间的耦合度,提高了系统的可维护性。可用于权限认证,日志和事务处理.     
     

    Java是一个面向对象(OOP)的编程语言,但它有个弊端就是当需要为多个不具有继承关系的对象引入一个公共行为时,例如日志记录、权限校验、事务管理、统计等功能,只能在每个对象里都引用公共行为,这样做不便于维护,而且有大量重复代码,AOP的出现弥补了OOP的这点不足。

    我认为最核心的一个作用就是:在不改变原始设计的基础上扩展功能。

    在最早的时候,项目里面对登录和非登录用户设计了很多功能上的划分,这就导致在项目各个地方都存在登录逻辑的判断到跳转新页面到操作完成之后无缝进入功能页面。

    那时候就是使用了AOP,确实很完美的hold住了这个需求。但是在新老版本的维护上,尤其是AspectJ的更新,对其他同事介入有一定的开发成本。

    现在ARouter的拦截器就可以完美解决上述需求。

    2.拦截器

    在ARouter的官方文档中ARouter.md已经表明了这是面向切面编程。

    声明拦截器(拦截跳转过程,面向切面编程)

    // 比较经典的应用就是在跳转过程中处理登陆事件,这样就不需要在目标页重复做登陆检查
    // 拦截器会在跳转之间执行,多个拦截器会按优先级顺序依次执行
    @Interceptor(priority = 8, name = "测试用拦截器")
    public class TestInterceptor implements IInterceptor {
        @Override
        public void process(Postcard postcard, InterceptorCallback callback) {
        ...
        callback.onContinue(postcard);  // 处理完成,交还控制权
        // callback.onInterrupt(new RuntimeException("我觉得有点异常"));      // 觉得有问题,中断路由流程
    
        // 以上两种至少需要调用其中一种,否则不会继续路由
        }
    
        @Override
        public void init(Context context) {
        // 拦截器的初始化,会在sdk初始化的时候调用该方法,仅会调用一次
        }
    }

    。。。。END

    一定要去给ARouter  Star一下。略表心仪

    参考:

    Java AOP篇-CSDN博客

    Java深入理解AOP(什么是AOP,AOP底层实现原理、应用)_java aop_鱼找水需要时间的博客-CSDN博客

  • 相关阅读:
    七、【VUE-CLI】插件
    探索 ECMAScript 2023 中的新数组方法
    重温 JavaScript 系列(4):实现异步的方法、 promise实现文件读取、Promise的并发处理
    lua源码分享-gc篇(三)流程之创建对象
    数字验证学习笔记——UVM学习1
    浅谈剩余电流动作继电器在电动伸缩门的应用
    【博客537】linux ssh usedns选项打开引发的ssh登录不上问题
    分布式链路追踪如何跨线程
    Android 屏幕适配
    Azure - 机器学习:创建机器学习所需资源,配置工作区
  • 原文地址:https://blog.csdn.net/qq_37492806/article/details/133858586