Android——面向AOP编程(二) Xerath 开源AOP框架
承接上文Android——面向AOP编程(一)https://pumpkin.blog.csdn.net/article/details/119849325https://pumpkin.blog.csdn.net/article/details/119849325在持续了一段时间的学习之后,运用闲暇时间写了一个开源项目,目前在持续扩充和发育中。
github:
https://github.com/jiangzhengnan/Xerath
Xerath
Xerath 是一个通过 [自定义注解]+ASM + Gradle Transform API 实现的一套功能强大,方便开发,并且能够有效减少重复代码的Android Aop 框架。
旨在编译器进行全局性的修改,来完成一些诸如方法耗时统计,异常收集,拦截,动态代理等特殊需求。
核心思想基于AOP编程,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程。
本项目为AOP思想在Android上的运用与实战,功能部分对标基于AspectJ的开源项目AopArms
引入方式
待上传到Maven,目前可以clone项目然后主动依赖
基本使用
1.统计方法耗时
在目标方法上增加@CalculateTime注解
@CalculateTimepublic static void CalculateTimeMethod() {//do something}
2.限制方法频繁调用
在目标方法上增加@Xerath_LimitCall(time = 1000L)注解,其中time为频繁调用的时间阈值
@Xerath_LimitCall(time = 1000L)public static void doubleClick() {//do something}
3.try-catch异常捕获
在目标方法上增加@TryCatch注解
@TryCatchpublic static void tryCatchMethod() {int a = 1 / 0;}
4.方法入参和返回值统计
在目标方法上增加@Xerath_CollectParams
@Xerath_CollectParamspublic static String testParams(boolean boolParam, byte byteParam, char charParam, short shortParam, int intParam, long longParam,float floatParam, double doubleParam, String stringParam, int[] intArrParam, JSONObject json) {String result = boolParam + " " + byteParam + " " + charParam + " " + shortParam + " " + intParam + " " +longParam + " " + floatParam + " " + doubleParam + " " + stringParam + " " + intArrParam.length + json.toString();return result;}
5 .弹出Toast
在目标方法上增加@Xerath_PopToast注解,其中str为需要显示Toast的内容
@Xerath_PopToast(str = "测试Toast")public static void popToast() {//do something}
功能列表(补充中)
参与贡献
- Fork 本仓库
- 新建 Feat_xxx 分支
- 提交代码
- 新建 Pull Request
欢迎感兴趣学习的小伙伴参与到项目的开发中来!本项目会持续更新~
Android——面向AOP编程(二) Xerath 开源AOP框架相关推荐
- Android 面向切面编程(AOP)
概念: AOP: Aspect Oriented Programming 面向切面编程. AOP是个概念,AspectJ 是它的一个具体实现.和Java配合使用. AspectJ:核心是他的编译器(a ...
- python aop编程_学习笔记: AOP面向切面编程和C#多种实现
AOP:面向切面编程 编程思想 OOP:一切皆对象,对象交互组成功能,功能叠加组成模块,模块叠加组成系统 类--砖头 系统--房子 类--细胞 系统--人 面向对象是非常适合做大型 ...
- 【Spring】面向切面编程详解(AOP)
文章目录 一.AOP概述 什么是AOP AOP应用场景 二.AOP的基本术语 术语介绍 术语举例详解 三.AOP实例说明 四.通知类型详解 概述 前置通知 后置通知 环绕通知 最终通知 六.AOP实现 ...
- Android 面向切面编程-aspjectj应用
先附上自己基于aspject封装的aop 插件 1.为什么要用切面 随着业务越来越复杂,项目中的模块可能越来越多, 面向切面可以减少模块间的耦合,提高模块的复用率 2.aspjectj语法 andro ...
- Android 面向接口编程
关键词:Android.POP.面向接口编程 .面向过程.面向协议 一.概述 面向接口编程是面向对象编程的一种实现方式,它的核心思想是将抽象与实现分离,从组件的级别来设计代码,达到高内聚低耦合的目的. ...
- Android面向切面编程框架(AspectJ 讲解)
安装AspectJ Pangu-Immortal (Pangu-Immortal) · GitHub Android上的ApsectJ开发由几部分组成,AspectJ gradle插件,ApsectJ ...
- Spring 源码分析(三) —— AOP(二)Spring AOP 整体架构
2019独角兽企业重金招聘Python工程师标准>>> Spring AOP 架构 先是生成代理对象,然后是拦截器的作用,最后是编织的具体实现.这是AOP实现的三个步 ...
- Spring——面向切面编程(AOP)
1 AOP概述 AOP 并不是 Spring 框架的专属名称,它的全称是 Aspect Oriented Programming ,意为:面向切面编程. 在程序运行某个方法的时候,不修改原始执 ...
- 在.NET Core中三种实现“可插拔”AOP编程方式(附源码)
一看标题肯定会联想到使用动态编织的方式实现AOP编程,不过这不是作者本文讨论的重点. 本文讨论另外三种在netcore中可实现的方式,Filter(过滤器,严格意义上它算是AOP方式),Dynamic ...
最新文章
- 直播回顾|结构光3D相机光机核心技术及3D成像性能分析
- Java集合框架源码解析之ArrayList
- 视频异常检测算法 python_使用Python进行异常检测
- 4/100. Maximum Depth of Binary Tree
- 520送你一份WebStorm的主题包,附带使用图文教程
- python图形化编程实例,python交互式图形编程实例(三)
- 彻底搞定 Java 注解
- React:开发者友好性和易用性
- Kotlin-Note
- MySQL5.7新增Performance Schema表
- Atitit xml xpath以及mybatis xml mapper脱机解析 目录 1.1. parseStt(String id, Element root)	1 1.2. parseStt
- matlab 指数函数拟合,[转载]MATLAB数据拟合例子(一次函数、指数函数、双曲线)...
- 怎么利用企业微信营销 企业微信如何营销 企业微信如何维护好友 企业微信如何开通
- Android O 自定义prop的问题小总结
- 表示学习(特征学习)
- 小兔兔系列语言故事5(之所谓的朋友5)
- 铁损分离-磁滞回线面积-离散点的面积
- RxJava学习笔记---简单使用
- asm(” RPT #N || NOP”)
- 第一台量子计算机哪国先发明出来,这是世界上第一台光量子计算机,它来自中国 | 早期实验室...