介绍地址:
http://androidannotations.org/
http://codekk.com/open-source-project-analysis/detail/Android/Trinea/%E5%85%AC%E5%85%B1%E6%8A%80%E6%9C%AF%E7%82%B9%E4%B9%8BJava%20%E6%B3%A8%E8%A7%A3%20Annotation
一、简介:
AndroidAnnotations是一个开源框架,旨在加快Android开发的效率。通过使用它开放出来的注解api,你几乎可以使用在任何地方, 大大的减少了无关痛痒的代码量,让开发者能够抽身其外,有足够的时间精力关注在真正的业务逻辑上面。而且通过简洁你的代码,也提高了代码的稳定性和后期的维护成本。
AA工作的原理其实也很简单,它通过使用jdk 1.6引入的Java Annotation Processing Tool,
在编译器中加了一层额外的自动编译步骤,用来生成基于你源码的代码。生成的代码是你源码的直接子类,而且自动生成的类的名称就是父类名称后面加个下划线。比如使用了@EActivity注解的MyActivity,AA都会自动帮你生成一个名为MyActivity_的类。使用AA的注解在编译期间就已经自动生成了对应的子类,运行期运行的其实就是这个子类,所以说AA的使用不会给APP的执行性能造成负面影响。
AA开发环境搭建:右键=>Properties=>Java Compiler => Annotation Processing => Factory Path
二、注解:
@EActivity:@EActivity后必须要有一个layout id 来表示这个Activity所使用的布局,远来的onCreate方法就不用了
@ViewById:TextView的id必须是:android:id="@+id/textView" . 这样我们在@ViewById后就不用再写括号了,直接写
@ViewById
TextView textView;
事件:
@Click:
@LongClick:
@Touch
@TextChange
@ItemClick
@NoTitle :去除标题
@Fullscreen:填充屏幕
@App:整个app上下文对象 ,相当于getApplication();
@SystemService:如果你想获取系统服务,只要在你的变量前加上@SystemService注解
@Extra:获取Intent中传递的值,加上@Extra注解,同时容错性很好,如果接收不到这个key对应的value,也没问题,你可以设置默认值。再有就是强转失败也不会造成crash,比如传递的是个int值,接收的时候是个String,也没有问题,只是接收失败罢了。
其他。。。。
三、说明
注解后的参数是可以不写的,条件是控件变量名称要与xml中定义的id必须一致
使用AndroidAnnotations千万要记得,编译的时候会生成一个子类,这个子类的名称就是在
原来的类之后加了一个下划线“_”,比如这个例子产生的子类名称为“MyActivity_”,这就需要你在注册这个Activity的时候,在
AndroidManifest.xml中将 MyActivity 改为 MyActivity_ ,使用的时候也是使用MyActivity_来表示此类,如从另一个Activity跳转
到此节目就要这样用:startActivity(new Intent(this,MyActivity_.class));
manifest.xml清单文件中 注册也是注册带下划线的
四、异步线程与UI线程的交互
当View相关的成员变量初始化完毕后,会调用拥有@AfterViews注解的方法
@AfterViews
void init(){
System.out.println("View初始化完毕");
}
成员变量初始化完毕,就会调用@AfterInject。
@AfterInject
void doOther(){
System.out.prinlnt("除了view以外的成员变量初始化完毕");
}
@Background
void doInBackground(String param){
//耗时操作
Thread.sleep(60*1000);
String msg = param;
updateUI(msg);
}
@UIThread
void updateUI(String result){
//更新UI操作
textview.setText(result);
}
UI线程执行的方法加个@UiThread,异步线程方法加个@Background,两者的交互就是方法直接的相互调用,其他的你不用关心,
一切的实现都是AA的编译器去自动生成交互的代码。交互的过程,完全没有在执行异步的感觉,不用再使用Handler去发送接收
Message了。两个注解就把以前一堆的代码实现的功能给实现了.
五、Rest API
http://androidannotations.org/
。。。。。
3524

被折叠的 条评论
为什么被折叠?



