AndroidAnnotations是用来解决开发中繁琐的初始化组件的一个开源的框架,开发中只需要配置一下相应的注解标签就可以了,其他的工作AndroidAnnotations框架都会帮我们解决,是我们开发中没有必要重复的写一些没什么技术含量的代码,相信使用过这个框架的开发人员都比较喜欢这个框架。
使用AndoridAnnotations框架的理由:
1. 提高了开发的效率
2. 代码看起来更加整洁
3. 方便统一管理
4. 提高了代码的复用性
AndroidAnnotations框架官方网址:http://androidannotations.org
AndroidAnnotations框架jar包:https://github.com/excilys/androidannotations/wiki/Download

其实,AndroidAnnotations框架只适合于开发一些中小型的app,比较复杂的一些项目建议不要使用这个框架,因为可能会导致项目开发中应用程序超支的情况,(一般一个应用程序最多支持65536个方法)如果超出了就会导致打包成的apk没法安装到手机中使用。
下载下来的jar包:

配置方法:
1. 将androidannotations-api-3.3.1.jar放入libs目录中
如图:

2. 在项目中新建一个compile-libs文件夹,并将androidannotations-3.3.1.jar包copy到该文件夹中
如图:

3. 右键项目–》properties
4. 选择Java Compiler项,将level设置为1.6
如图:

5. 将Annotations Processin项中的第一项勾上
如图:

6.将Factory Path项的第一项勾上,并且点击Add JARs按钮
如图:

7. 找到该项目之前创建的compile-libs文件中添加的jar包,OK
如图:

8. 配置完成,可以在项目中测试一下配置是否成功,出现如下图所示可用的注解,说明已经配置成功,可以愉快的敲代码了。
如图:

AndroidAnnotations框架的使用方法:
1.当使用@EActivity、@EService这些类注解标签的时候,要注意在 Manifest.xml文件中配置(类名+下划线)的name。
如图:

2.下面举几个简单的例子说明一下AndroidAnnotations框架中注解标签的使用的方法:
如图:

这里的@Click注解标签要注意在声明玩该button1之后才能正确使用。
3.一些其他注解标签的使用方法其实都差不多,使用都非常简单,具体可以查看官方网站(https://github.com/excilys/androidannotations/wiki/AvailableAnnotations)中列出了所有的标签的使用方法进行学习使用。
4.在使用注解标签中需要注意的一些常见的问题:
编译错误:
1.要注册同名Activity_(原因在下面进行具体的解释)
2.View的修饰符是不能使用private修饰(原因在下面进行具体的解释)
3.用注解注释的方法是不能使用private修饰的方法(原因在下面进行具体的解释)

AndoridAnnotations框架的原理:
其实使用注解标签并不是java编译器就识别这些注解标签,只不过AndroidAnnotations框架通过注解标签帮我们自动生成了那些没什么技术含量的代码,标签本身并不能做什么事情,只不过标签背后通过代码进行了处理。
一.生成代码的分析
其实我们可以看到该框架自动生成的代码,方法:


从这些自动生成的代码就可以懂得了前边在使用中注意的原因:
1.自动生成的类名中就是:自己创建的Activity类名+下划线构成的。所以在Manifest.xml文件中要将name改成加下划线的形式的名称。
2.View的修饰符和用注解注释的方法是不能使用private的原因是:如果使用了private来修饰,那么其他的类就没法使用这些属性和方法,所以Annotations框架就没法自动生成相应的代码了。

如果要了解Annotations框架是如何自动生成代码的:
1.要下载Annotations框架的源码地址:https://github.com/excilys/androidannotations
2.分析MainActivity_中主要的三个类:
如图:

打开路径:E:\源码包\androidannotations-develop\AndroidAnnotations\androidannotations-api\src\main\java\org\androidannotations\api\view

二、java注解的处理:
1.分为两种方式:
1.反射处理注解
2.编译器编译时处理注解(Annotations使用了这种方式):
使用到两个重要的东西:
1.AbstractProcessor类(用来获取注解标签,然后对相应的标签进行相应的处理)
2.javax.lang.model.element包(对注解标签的描述,说明哪些是类上边配置的注解标签,哪些是成员变量上配置的注解标签,哪些是方法上边配置的注解标签)
注解的核心AbstractProcessor类的源码打开地址:
E:\源码包\androidannotations-develop\AndroidAnnotations\androidannotations\src\main\java\org\androidannotations下的AndroidAnnotationProcessor类

2.这两种注解处理方式的区别:通过反射处理注解会影响效率,但是使用编译器编译时处理注解这种方式程序处理的性能是不会收到影响的,跟调用正常的方法的处理效率是相同的。
三、生成代码
Annotations使用了第三方的Apache子项目Jcodemodel,官网地址:https://codemodel.java.net
eg:Activity中是怎样自动生成代码的:首先在Annotations的源码中找到EActivityHolder这个类,地址:E:\源码包\androidannotations-develop\AndroidAnnotations\androidannotations\src\main\java\org\androidannotations\holder下的EActivityHolder类

AndroidAnnotations开发框架在Eclipse中的搭建和使用以及框架实现的原理相关推荐

  1. MAC中在eclipse luna上搭建移动平台自动化测试框架(UIAutomator/Appium/Robotium/MonkeyRunner)关键点记录

    这几天因为原来在用的hp laptop的电池坏掉了,机器一不小心就断电,所以只能花时间在自己的mackbook pro上重新搭建整套环境,大家都知道搭建环境是个很琐碎需要耐心的事情,特别是当你搭建的安 ...

  2. java ssh环境 eclipse_SSH在eclipse中环境搭建

    Hibernate: Hibernate是一个面向JAVA环境的对象/关系数据库映射工具,用于吧面向对象模型标识的对象映射到基于SQL的关系模型的数据结构中.Hibernate的目标是释放开发者通常的 ...

  3. 在eclipse中如何搭建ssh框架

    第一步:创建一个叫做ssh的项目吧.勾选web.xml文件,请看如下截图. 第二步:搭建struts2环境 首先:引入struts2的包 接下来需要修改WEB-INF里面的web.xml文件 第三步: ...

  4. OSGI企业应用开发(二)Eclipse中搭建Felix运行环境

    上篇文章介绍了什么是OSGI以及使用OSGI构建应用的优点,接着介绍了两款常用的OSGI实现,分别为Apache Felix和Equinox,接下来开始介绍如何在Eclipse中使用Apache Fe ...

  5. 在eclipse中搭建maven工程(第二种方法)

    第一种方法见前面的博客 用Maven创建web项目(详细步骤) maven-3.3.9 下载之后就是配置环境变量,可以去百度一哈,用MAVEN_HOME配置,我图方便,直接在用户的path配置的. 接 ...

  6. java 详解 搭建 框架_在Eclipse中搭建Struts框架过程详解

    虽然用MyEclipse搭建Struts框架是更为便捷的方式,但是用Eclipse可以增强自己对Struts的理解.本文演示了使用Eclipse搭建Struts 1.2框架的过程.此项目实现了简单的功 ...

  7. 在Eclipse中搭建Python开发环境之三新建python 提示django not found

    python 不是内部或外部命令 现在我假设你的python安装在C:\Python26目录下,设置环境变量方法如下: 方法一.我的电脑->属性->高级->环境变量->系统变量 ...

  8. 在Eclipse中搭建Python Django

    Python Django 在Elipse中的搭建过程 首先下载安装Python的windows版本(linux),下载地址:http://www.python.org python在windows环 ...

  9. 转:在eclipse中搭建maven工程(第二种方法)

    转自 : https://blog.csdn.net/bug_moving/article/details/54178092: 第一种方法见前面的博客 用Maven创建web项目(详细步骤) mave ...

最新文章

  1. 微服务架构崛起 能否成为下一代云计算?
  2. SendMessage、PostMessage原理
  3. Access-Control-Allow- 设置跨域资源共享CORS详解
  4. Java Persistence API:快速入门
  5. leetcode511. 游戏玩法分析 I(SQL)
  6. java复制和上传_java文件上传复制等功能
  7. Ubuntu 环境初始化
  8. ping下主服务器mysql_mysql主从同步配置
  9. 很多人把红薯当成减肥餐,吃红薯到底是增肥还是减肥?
  10. vue全选和取消全选(无bug)
  11. Windows Server上安装部署Zabbix agent
  12. 内存cgroup---CGroup中参数由来篇
  13. 2.从Paxos到Zookeeper分布式一致性原理与实践---一致性协议
  14. Linux下GNOME桌面的安装
  15. 这两款实用的win10录屏软件,你们千万别错过
  16. IEEE Xtreme 11.0极限编程题目分类
  17. Allegro 17.4 PCB设计流程与经验
  18. kettle实现颗粒度转换
  19. 【100+ python基础入门-42】Python函数参数的六种类型
  20. 机器人工程师技术资料

热门文章

  1. oracle跨库插入数据,Oracle跨数据库查询并插入实现原理及代码
  2. python ljust 库_Python知识精解:str ljust()方法
  3. 我的硬盘居然被win10安装工具_安装win10无法识别硬盘,你需要这样做!网友:涨知识了...
  4. 判断数组中是否包含某个元素,判断对象中是否包含某个属性,判断字符串中是否包含某个字符串片段
  5. Nginx综合介绍以及配置文件详解
  6. Linux单用户模式、救援模式、克隆虚拟机与Linux机器互相登录
  7. delete表1条件是另一个表中的数据,多表连接删除
  8. Logback 专题
  9. 使用Markdown
  10. linux使用lftp文件自动认证上传下载