Android APT实战

Android开发中,注解平时我们用的比较多,也许我们会比较好奇,注解的背后是如何工作的,这篇文章帮大家一步步创建一个简单的注解处理器。

简介

APT(Annotation Processing Tool)即注解处理器,在编译的时候可以处理注解然后搞一些事情,也可以在编译时生成一些文件之类的。ButterKnife和EventBus都使用了APT技术,如果不会APT技术就很难看懂这两个框架的源码。

作用

使用APT可以在编译时来处理编译时注解,生成额外的Java文件,有如下效果:

  • 可以达到减少重复代码手工编写的效果。

如ButterKnife,我们可以直接使用注解来减少findviewbyid这些代码,只需要通过注解表示是哪个id就够了。

  • 功能封装。将主要的功能逻辑封装起来,只保留注解调用。
  • 相对于使用Java反射来处理运行时注解,使用APT有着更加良好的性能。

APT与AOP简介

  • APT是在编译开始时就介入的,用来处理编译时注解。
  • AOP(Aspect Oridnted Programming)是在编译完成后生成dex文件之前,通过直接修改.class文件的方式,来对代码进行修改或添加逻辑。常用在在代码监控,代码修改,代码分析这些场景。

APT基本使用

基本使用流程主要包括如下几个步骤:

  1. 创建自定义注解
  2. 创建注解处理器,处理Java文件生成逻辑
  3. 项目中调用

APT 工程

APT 工程创建

一般情况下,APT 大致的的一个实现过程:

1、创建一个Android项目

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/792851.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux 命令探秘:揭秘那些有趣的小命令

目录 1.发现隐藏在终端的惊喜小命令 2.小火车 1.安装EPEL 2.小火车出发准备 3.输入命令 3.linux_logo 1.安装linux_logo 2.输入命令 3.linux_logo介绍 4.牛讲话 1.安装命令 2.输入命令 5. figlet 1.安装命令 2.输入命令 “如果您在解决类似问题时也遇到了困…

stm32学习笔记---I2C通信协议(理论部分)

目录 串口通信协议和I2C通信协议的联系 同步和异步的区别 I2C通信 硬件电路 指定地址写的流程 当前地址读的流程 指定地址读的流程 声明:本专栏是本人跟着B站江科大的视频的学习过程中记录下来的笔记,我之所以记录下来是为了方便自己日后复习。如…

软航文档控件VUE示例运行及控件替换方法记录

目录 示例运行 步骤一、npm install 步骤二、npm run dev 软航文档控件替换 附 vue小白记录一下软航文档控件VUE示例的运行方法以及示例中控件的替换过程。 示例运行 在已经安装好VUE环境的电脑上,VUE环境部署可以参考另一篇:配置VUE环境过程中 …

数据结构复习计划之复杂度分析(时间、空间)

第二节:算法 时间复杂度和空间复杂度 算法(Algorithm):是对特定问题求解方法(步骤)的一种描述,是指令的有限序列,其中每一条指令表示一个或多个操作。 算法可以有三种表示形式: 伪代码 自然语言 流程图 算法的五…

【正点原子i.MX93开发板试用连载体验】为什么模型不能运行在NPU上

本文最早发表于电子发烧友论坛:【新提醒】【正点原子i.MX93开发板试用连载体验】基于深度学习的语音本地控制 - 正点原子学习小组 - 电子技术论坛 - 广受欢迎的专业电子论坛! (elecfans.com) 昨天提到要使模型运行的NPU上,必须先将其量化。如果对没有量化…

编程零基础教程,从知道什么是前端开始

本文作者:程序员鱼皮 免费编程学习 - 编程导航网:https://www.code-nav.cn 鱼小皮:百哥,我想学编程,应该先学啥呢? 老百:小皮,怎么突然想学编程了,不会又是三分钟热度吧&…

vue学习day06-脚手架目录文件介绍与项目运行流程、组件化开发和根组件、普通组件的注册使用-局部注册、全局注册

16、脚手架目录文件介绍与项目运行流程 (1)脚手架目录文件介绍 (2)Index.html (3)Main.js 17、组件化开发和根组件 (1)组件化 1)概念 一个页面可以拆分成一个个组件&am…

Spring源码二十二:Bean实例化流程五

上一篇Spring源码二十一:Bean实例化流程四,咱们主要分析里createBeanInstance方法Spring给我们提供给的FactoryMethod方法,举例说明了factoryMethod属性如何使用,同时简单讨论了具体实现逻辑。 这一篇咱们将进入反射实例化Bean&am…

MySQL的事务使用

文章目录 特点JDBC使用事务 特点 事务的基本属性ACID: 数据库事务的ACID特性是指保证数据库在执行事务操作时能够可靠和正确的四个基本属性。ACID是原子性(Atomicity)、一致性(Consistency)、隔离性(Isol…

科研绘图之tSNE图

t-SNE(t-Distributed Stochastic Neighbor Embedding,t分布随机邻域嵌入)是一种用于数据降维和可视化的算法。它可以将高维数据映射到二维或三维空间,同时尽可能地保留数据点之间的局部关系。t-SNE特别适用于探索数据的内部结构和…

C语言 指针和数组——指针数组的应用:命令行参数

目录 命令行参数 演示命令行参数与main函数形参间的关系 命令行参数  什么是 命令行参数( Command Line Arguments )?  GUI 界面之前,计算机的操作界面都是字符式的命令行界面 ( DOS 、 UNIX 、 Linux &…

IEPE数据采集卡的作用说明

IEPE指的是一种自带电量放大器或电压放大器的加速度传感器。IEPE是压电集成电路的缩写。因为由加速度传感器产生的电量是很小的,因此传感器产生的电信号很容易受到噪声干扰,需要用灵敏的电子器件对其进行放大和信号调理。IEPE中集成了灵敏的电子器件使其…

连锁行业观察:一线门店设备如何运维?化“管理”为“服务”

连锁零售行业的数字化发展,离开不了大量智能设备的支撑,比如我们日常见到的各种门店互动终端、自助收银设备、无人值守售货机等等。 由于连锁行业的特性,这些设备往往位置分散,数量众多,难以集中管理。一旦这些设备遇…

ARM功耗管理之多核处理器启动

安全之安全(security)博客目录导读 思考:SecureBoot?多核处理器启动流程?PSCI启动方式? 一般嵌入式系统使用的都是对称多处理器(Symmetric Multi-Processor, SMP)系统,包含了多个cpu, 这几个cp…

YOLOv8改进 | 注意力机制| 对小目标友好的BiFormer【CVPR2023】

秋招面试专栏推荐 :深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 💡💡💡本专栏所有程序均经过测试,可成功执行💡💡💡 专栏目录 :《YOLOv8改进有效…

从零开始开发视频美颜SDK:实现直播美颜效果

因此,开发一款从零开始的视频美颜SDK,不仅可以节省成本,还能根据具体需求进行个性化调整。本文将介绍从零开始开发视频美颜SDK的关键步骤和实现思路。 一、需求分析与技术选型 在开发一款视频美颜SDK之前,首先需要进行详细的需求…

MongoDB本地配置分片

mongodb server version: 7.0.12 社区版 mongo shell version: 2.2.10 平台:win10 64位 控制台:Git Bash 分片相关节点结构示意图 大概步骤 1. 配置 配置服务器 副本集 (最少3个节点) -- 创建数据目录 mkdir -p ~/dbs/confi…

硬件开发工具Arduino IDE

招聘信息共享社群 关联上篇文章乐鑫ESPRESSIF芯片开发简介 Arduino IDE(集成开发环境)是为Arduino硬件开发而设计的一款软件,它提供了一个易于使用的图形界面,允许用户编写、编辑、编译和上传代码到Arduino开发板。Arduino IDE的…

【逆向基础】十、逆向工具分享之DIE(Detect It Easy)

一、简介 DIE(Detect It Easy)是一款可以轻松检测PE文件的程序;其主要作用是查壳,并将pe文件的内容解析出来,包括PE文件中包含的导入函数、导出函数的名称及地址,入口函数地址等,是技术人员分析…

mysql高并发设计

mysql高并发设计 一、部署方案 https://blog.csdn.net/weixin_37519752/article/details/138728036 方案1:双主 1、优点 写入扩展性:两个节点都可以处理写入操作,提高了写入操作的扩展性。 高可用性:在任一节点故障时&#xff…