承接上文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}

功能列表(补充中)

参与贡献

  1. Fork 本仓库
  2. 新建 Feat_xxx 分支
  3. 提交代码
  4. 新建 Pull Request

欢迎感兴趣学习的小伙伴参与到项目的开发中来!本项目会持续更新~

Android——面向AOP编程(二) Xerath 开源AOP框架相关推荐

  1. Android 面向切面编程(AOP)

    概念: AOP: Aspect Oriented Programming 面向切面编程. AOP是个概念,AspectJ 是它的一个具体实现.和Java配合使用. AspectJ:核心是他的编译器(a ...

  2. python aop编程_学习笔记: AOP面向切面编程和C#多种实现

    AOP:面向切面编程   编程思想 OOP:一切皆对象,对象交互组成功能,功能叠加组成模块,模块叠加组成系统 类--砖头     系统--房子 类--细胞     系统--人 面向对象是非常适合做大型 ...

  3. 【Spring】面向切面编程详解(AOP)

    文章目录 一.AOP概述 什么是AOP AOP应用场景 二.AOP的基本术语 术语介绍 术语举例详解 三.AOP实例说明 四.通知类型详解 概述 前置通知 后置通知 环绕通知 最终通知 六.AOP实现 ...

  4. Android 面向切面编程-aspjectj应用

    先附上自己基于aspject封装的aop 插件 1.为什么要用切面 随着业务越来越复杂,项目中的模块可能越来越多, 面向切面可以减少模块间的耦合,提高模块的复用率 2.aspjectj语法 andro ...

  5. Android 面向接口编程

    关键词:Android.POP.面向接口编程 .面向过程.面向协议 一.概述 面向接口编程是面向对象编程的一种实现方式,它的核心思想是将抽象与实现分离,从组件的级别来设计代码,达到高内聚低耦合的目的. ...

  6. Android面向切面编程框架(AspectJ 讲解)

    安装AspectJ Pangu-Immortal (Pangu-Immortal) · GitHub Android上的ApsectJ开发由几部分组成,AspectJ gradle插件,ApsectJ ...

  7. Spring 源码分析(三) —— AOP(二)Spring AOP 整体架构

    2019独角兽企业重金招聘Python工程师标准>>> Spring AOP 架构         先是生成代理对象,然后是拦截器的作用,最后是编织的具体实现.这是AOP实现的三个步 ...

  8. Spring——面向切面编程(AOP)

    1 AOP概述   AOP 并不是 Spring 框架的专属名称,它的全称是 Aspect Oriented Programming ,意为:面向切面编程.   在程序运行某个方法的时候,不修改原始执 ...

  9. 在.NET Core中三种实现“可插拔”AOP编程方式(附源码)

    一看标题肯定会联想到使用动态编织的方式实现AOP编程,不过这不是作者本文讨论的重点. 本文讨论另外三种在netcore中可实现的方式,Filter(过滤器,严格意义上它算是AOP方式),Dynamic ...

最新文章

  1. 直播回顾|结构光3D相机光机核心技术及3D成像性能分析
  2. Java集合框架源码解析之ArrayList
  3. 视频异常检测算法 python_使用Python进行异常检测
  4. 4/100. Maximum Depth of Binary Tree
  5. 520送你一份WebStorm的主题包,附带使用图文教程
  6. python图形化编程实例,python交互式图形编程实例(三)
  7. 彻底搞定 Java 注解
  8. React:开发者友好性和易用性
  9. Kotlin-Note
  10. MySQL5.7新增Performance Schema表
  11. Atitit xml xpath以及mybatis xml mapper脱机解析 目录 1.1. parseStt(String id, Element root) 1 1.2. parseStt
  12. matlab 指数函数拟合,[转载]MATLAB数据拟合例子(一次函数、指数函数、双曲线)...
  13. 怎么利用企业微信营销 企业微信如何营销 企业微信如何维护好友 企业微信如何开通
  14. Android O 自定义prop的问题小总结
  15. 表示学习(特征学习)
  16. 小兔兔系列语言故事5(之所谓的朋友5)
  17. 铁损分离-磁滞回线面积-离散点的面积
  18. RxJava学习笔记---简单使用
  19. asm(” RPT #N || NOP”)
  20. 第一台量子计算机哪国先发明出来,这是世界上第一台光量子计算机,它来自中国 | 早期实验室...

热门文章

  1. 【直播预告】从A76到 A78——在变化中学习ARM微架构
  2. Pushlet 学习
  3. 60岁大爷开甜品店,成功解决甜品店的客流和营业额下滑的问题!
  4. 计算机三级数据库选择题题库百度云,计算机三级数据库题库2016(附答案)
  5. java入门1_Java入门1
  6. 如何获得个人免费空间
  7. 从0到1教你写UCOS-III 第十二部分:实现时基列表
  8. 【Git系列】GitLab使用教程(详细)
  9. etag php,PHP可靠地设置Etag
  10. 工业界表面缺陷检测方法综述