android studio 编译时注解(一) 工作原理解析

本教程是基于android studio 3.0+来实践的
demo项目源码

为什么要用编译时注解?因为运行时注解是十分消耗资源的,Eventbus的低版本就是采用运行时注解,被吐槽效率低下,所以新版本的Eventbus都是采用编译时注解注入的,其效率基本和直接写代码没什么区别

在整理思路之前,我们来了解一下,编译时注解和运行时注解

运行时注解
通常被定义的注解需要通过反射来获取相关值
编译时注解
在代码构建编译过程的时候,生成java文件然后供需要的类进行调用

两者根本区别在于,前者是程序员预先写好的java文件中,直接调用的,
而后者是程序员写好java代码的生成规则,程序员自己不写java文件,
交给编译器去写java文件,,java文件只有编译器编译完成后才能调用.

图解工程

这里写图片描述

第一点

app主工程
build.gradle中需要依赖lib.annotation,并且指定一个编译时注解器

dependencies {  
    annotationProcessor project(':lib.annotation.process')  //指定注解器(图中的3)
    implementation project(':lib.annotation')  //依赖注解类工程(图中2)
}

解析:当gradle运行编译的时候,会进入到lib.annotation.process工程中,对整个app工程使用了lib.annotation工程的java文件进行检索,结果会在lib.annotation.process.AbstractProcessor.process方法中回调,最后process结束后将编译出来的java代码输入到app工程的build.generated.source.apt.debug.*中,到此为止,编译出来的java代码就跟自己创建的java文件一样调用

第二点

lib.annotation是一个java library工程,,注意,是java libra

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值