`
huihui920823
  • 浏览: 36502 次
  • 性别: Icon_minigender_1
  • 来自: 济南
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多

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类

<script type="text/javascript"> $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('<li/>').text(i)); }; $numbering.fadeIn(1700); }); }); </script>

版权声明:本文为博主原创文章,未经博主允许不得转载。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics