Android注解框架androidannotations简介

写程序的目的当然是为了给用户提供产品及服务,写程序是辛苦的,有时要加班加点,要抓破头皮等。在写程序的过程中,我们应该尽量让开发工作变得更轻松,更有味。我们能做的每一件事就是尽量减少代码量,不要重复造轮子。Android开源框架androidannotations(我简称AA框架)的目的正是于此,当然代码量减少了,不仅仅可以让工作更轻松,让读代码的人更轻松,维护代码更爽。正在开发的项目中,我们是用到了androidannotations注解框架,所以简单地讲讲:

androidannotations的官方网址:http://androidannotations.org/及github网址:https://github.com/excilys/androidannotations/wiki,两网址详细介绍了框架的优势及使用,框架的搭建工作可以参考:http://blog.csdn.net/limb99/article/details/9067827。下面用两个简单的Activity(用的同一个布局文件,就简单的6个控件)来对比下代码量:

-------------无注解框架的写法-----------------

public class TestActivity extends Activity {

private TextView textView01;

private TextView textView02;

private TextView textView03;

private TextView textView04;

private TextView textView05;

private Button button;

@Override

protected void onCreate(Bundle savedInstanceState) {

// TODO Auto-generated method stub

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

this.textView01 = (TextView) findViewById(R.id.textView01);

this.textView02 = (TextView) findViewById(R.id.textView02);

this.textView03 = (TextView) findViewById(R.id.textView03);

this.textView04 = (TextView) findViewById(R.id.textView04);

this.textView05 = (TextView) findViewById(R.id.textView05);

this.button = (Button) findViewById(R.id.button);

this.button.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

// 实现点击事件

}

});

}

@Override

protected void onResume() {

// TODO Auto-generated method stub

super.onResume();

setViewData();

}

private void setViewData() {

this.textView01.setText("无AA框架测试1");

this.textView02.setText("无AA框架测试2");

this.textView03.setText("无AA框架测试3");

this.textView04.setText("无AA框架测试4");

this.textView05.setText("无AA框架测试5");

}

}

---------用了androidannotations注解框架写法----------------------

@EActivity(R.layout.activity_main)

public class AATestActivity extends Activity {

@ViewById(R.id.textView01)

TextView textView01;

@ViewById(R.id.textView02)

TextView textView02;

@ViewById(R.id.textView03)

TextView textView03;

@ViewById(R.id.textView04)

TextView textView04;

@ViewById(R.id.textView05)

TextView textView05;

@ViewById(R.id.button)

Button button;

@Click(R.id.button)

void btnClick() {

// 实现点击事件

}

@Override

protected void onResume() {

// TODO Auto-generated method stub

super.onResume();

setViewData();

}

private void setViewData() {

this.textView01.setText("无AA框架测试1");

this.textView02.setText("无AA框架测试2");

this.textView03.setText("无AA框架测试3");

this.textView04.setText("无AA框架测试4");

this.textView05.setText("无AA框架测试5");

}

}

相比之下,用了注解写法,就不用重复写findViewById()及写onclick()事件等。这两个类的代码量看不去区别不明显,主要控件少,而且实现功能少,当我们布局页面很复杂,要实现很多监听时,用注解方法的优势就很明显。注解方法很多,可以参考http://doc.okbase.net/rain_butterfly/archive/95335.html,使用极为方便,而且经过简单测试,注解框架对程序的性能影响非常小。

不过在使用的时候,个人发现了几个感觉不太好的地方:

1,我们写在Activity中的控件如Button,不能写成私有的private Button btn。

2,另外在AndroidManifest.xml清单文件中要把对应的Acitivity(如AATestActivity )写成AATestActivity _才可以。

3,调试程序可能有些不方便。

时间: 2024-10-29 20:56:33

Android注解框架androidannotations简介的相关文章

注解框架---AndroidAnnotations

AndroidAnnotations是一个开源框架,旨在加快Android开发的效率.通过使用它开放出来的注解api,你几乎可以使用在任何地方, 大大的减少了无关痛痒的代码量,让开发者能够抽身其外,有足够的时间精力关注在真正的业务逻辑上面.而且通过简洁你的代码,也提高了代码的稳定性和后期的维护成本.以下AndroidAnnotations简称为AA 可能会有人提出异议了,我们移动设备的性能,不比后台服务器拥有充足的内存和运算能力.当大量的使用注解的时候,会不会对APP的造成什么不良的影响,会不会

【转】Android 网络通信框架Volley简介(Google IO 2013)

Volley主页 https://android.googlesource.com/platform/frameworks/volley http://www.youtube.com/watch?v=yhv8l9F44qo&feature=player_embedded 1. 什么是Volley 在这之前,我们在程序中需要和网络通信的时候,大体使用的东西莫过于AsyncTaskLoader,HttpURLConnection,AsyncTask,HTTPClient(Apache)等,今年的Go

Android 注解框架对比

Java的注解(Annotation)相当于一种标记,在程序中加入注解就等于为程序打上某种标记,标记可以加在包,类,属性,方法,本地变量上.然后你可以写一个注解处理器去解析处理这些注解(人称编译时注解),也可以在程序运行时利用反射得到注解做出相应的处理(人称运行时注解).       开发Android程序时,没完没了的findViewById, setOnClickListener等等方法,已经让大多数开发者头疼不已.好在市面上有所谓的注解框架可以帮助开发者简化一些过程.比较流行的有butte

Android注解框架butterknife基本用法

现在安卓项目开发中,butterknife是比较常用的注解框架,从而简化了findViewById的重复使用,提高了编程的效率 然而为什么要使用butterknife?一方面是为了提高编程效率,一方面butterknife对系统性能是没有影响的,因为butterknife是在编译的时候生成新的class,不是运行时进行反射,所以对性能不会有影响 butterknife现在最新版本是butterknife8,不过开发中还是主要使用butterknife6和butterknife7 butterkn

android hook 框架 libinject2 简介、编译、运行

简介: libinject 最开始是2011年看雪android安全版版主之一‘古河’大神发布的一份android平台的注入库:  发个Android平台上的注入代码  ,网上很多随后发布的注入代码都是其变种,不过我这几天尝试运行那份代码,发现有些问题,本博运行和分析的代码是另外一位大神的改进版本,在我的环境里运行注入和挂钩都成功了 : Android中的so注入(inject)和挂钩(hook) - For both x86 and arm ,为了表示区别,我把这个项目称为  libinjec

Android 网络通信框架Volley简介(Google IO 2013)

Volley主页 https://android.googlesource.com/platform/frameworks/volley http://www.youtube.com/watch?v=yhv8l9F44qo&feature=player_embedded 1. 什么是Volley 在 这之前,我们在程序中需要和网络通信的时候,大体使用的东西莫过于 AsyncTaskLoader,HttpURLConnection,AsyncTask,HTTPClient(Apache)等,今年的

[转]Android 网络通信框架Volley简介(Google IO 2013)

Volley主页 https://android.googlesource.com/platform/frameworks/volley http://www.youtube.com/watch?v=yhv8l9F44qo&feature=player_embedded 1. 什么是Volley 在这之前,我们在程序中需要和网络通信的时候,大体使用的东西莫过于AsyncTaskLoader,HttpURLConnection,AsyncTask,HTTPClient(Apache)等,今年的Go

Android 网络通信框架Volley简介

Volley主页 https://android.googlesource.com/platform/frameworks/volley http://www.youtube.com/watch?v=yhv8l9F44qo&feature=player_embedded 1. 什么是Volley Google I/O 2013上,Volley发布了volley.在这之前,我们在程序中需要和网络通信的时候,大体使用的东西莫过于 AsyncTaskLoader HttpURLConnection A

Android orm 框架xUtils简介

数据库操作建议用ORM框架,简单高效.这里推荐xUtils,里面包含DBUtils.github地址:https://github.com/wyouflf/xUtils 获得数据库实例建议用单例模式. static DbUtils db = null; public static DbUtils getDb(Context context) { if (context == null) { context = DoctorApplication.getInstance(); } if (db =