AndroidAnnotations 是如何工作的
2014-04-06 13:40
393 查看
AndroidAnnotations工作在一个非常简单的方式。它会使用标准的Java注解处理工具自动添加一个额外的编译步骤生成的源代码。(译者注:即生成一个原有类名加“_”的类,这个类才是真正运行用的类)
源代码是什么样子的?
例如每个使用@EActivity注解的activity,将生成这个activity的一个子类,它的名字是在activity名称末尾追加一个下划线。
例如,下面的类:
package com.some.company;
@EActivity
publicclassMyActivityextends
Activity{
// ...
}
将生成以下子类,在同一个包路径中,但在另一个源文件夹:(译者注:在测试过程中,并未在src目录下发现生成的类。但此类确实生成了,它在哪里呢?实际是在项目根目录的.apt_generated文件夹下,在eclipse中无法查看到,需要到资源管理其相应文件夹中查看。)
packagecom.some.company;
publicfinalclassMyActivity_extendsMyActivity{
// ...
}
该子类重载一些方法(例如的onCreate()),通过委托方式调用了你的activity的相关方法。这就是为什么你必须在AndroidManifest.xml文件中为你的activity名称添加“_”的原因:
<activityandroid:name=".MyListActivity_"/>
启动一个使用注解的activity
在原始的Android开发中,你通常是这样启动activity的:
startActivity(this,MyListActivity.class);
然而,如果使用AndroidAnnotations,真正被启动的activity是MyListActivity_:
startActivity(this,MyListActivity_.class);
创建Intent
1.AndroidAnnotations2.4及以上版本
我们提供了一个静态的助手方法,让你启动真正的activity:
// 启动 activity
MyListActivity_.intent(context).start();
// 创建一个intent使用 activity
Intentintent=MyListActivity_.intent(context).get();
// 你也可以设置flags
MyListActivity_.intent(context).flags(FLAG_ACTIVITY_CLEAR_TOP).start();
//你甚至可以在activity中使用@Extra定义扩展数据并作为activity的启动参数
MyListActivity_.intent(context).myDateExtra(someDate).start();
2.AndroidAnnotations2.7及以上版本
你还可以使用startActivityForResult()方法:
MyListActivity_.intent(context).startForResult();
启动一个使用注解的Service
在原始的Android开发中,你通常是这样启动一个服务的:
startService(this,MyService.class);
然而,如果使用AndroidAnnotations,则真正的服务MyService_将被启动:
startService(this,MyService_.class);
创建Intent
1.AndroidAnnotations2.7及以上版本
我们提供了一个静态的方法,让你启动生成的service:
// 启动service
MyService_.intent(context).start();
// 通过service创建一个intent
Intentintent=MyService_.intent(context).build();
// 你能在启动service时使用flags
MyService_.intent(context).flags(Intent.FLAG_GRANT_READ_URI_PERMISSION).start();
是否有任何性能影响呢?
简短的回答是没有。更多关于可查看常见问题。
现在你已经学习了基础知识,让我们再来看看如何让Activities更加强大。
AndroidAnnotations是由Pierre-Yves
Ricau创建,由eBusinessInformations赞助。
(注:本文阐述的只是它的工作方式,揭示了AndroidAnnotations是如何处理我们使用注解方式编写的代码。并不是你的代码要这样写)
AndroidAnnotations工作在一个非常简单的方式。它会使用标准的Java注解处理工具自动添加一个额外的编译步骤生成的源代码。(译者注:即生成一个原有类名加“_”的类,这个类才是真正运行用的类)
源代码是什么样子的?
例如每个使用@EActivity注解的activity,将生成这个activity的一个子类,它的名字是在activity名称末尾追加一个下划线。
例如,下面的类:
package com.some.company;
@EActivity
publicclassMyActivityextends
Activity{
// ...
}
将生成以下子类,在同一个包路径中,但在另一个源文件夹:(译者注:在测试过程中,并未在src目录下发现生成的类。但此类确实生成了,它在哪里呢?实际是在项目根目录的.apt_generated文件夹下,在eclipse中无法查看到,需要到资源管理其相应文件夹中查看。)
packagecom.some.company;
publicfinalclassMyActivity_extendsMyActivity{
// ...
}
该子类重载一些方法(例如的onCreate()),通过委托方式调用了你的activity的相关方法。这就是为什么你必须在AndroidManifest.xml文件中为你的activity名称添加“_”的原因:
<activityandroid:name=".MyListActivity_"/>
启动一个使用注解的activity
在原始的Android开发中,你通常是这样启动activity的:
startActivity(this,MyListActivity.class);
然而,如果使用AndroidAnnotations,真正被启动的activity是MyListActivity_:
startActivity(this,MyListActivity_.class);
创建Intent
1.AndroidAnnotations2.4及以上版本
我们提供了一个静态的助手方法,让你启动真正的activity:
// 启动 activity
MyListActivity_.intent(context).start();
// 创建一个intent使用 activity
Intentintent=MyListActivity_.intent(context).get();
// 你也可以设置flags
MyListActivity_.intent(context).flags(FLAG_ACTIVITY_CLEAR_TOP).start();
//你甚至可以在activity中使用@Extra定义扩展数据并作为activity的启动参数
MyListActivity_.intent(context).myDateExtra(someDate).start();
2.AndroidAnnotations2.7及以上版本
你还可以使用startActivityForResult()方法:
MyListActivity_.intent(context).startForResult();
启动一个使用注解的Service
在原始的Android开发中,你通常是这样启动一个服务的:
startService(this,MyService.class);
然而,如果使用AndroidAnnotations,则真正的服务MyService_将被启动:
startService(this,MyService_.class);
创建Intent
1.AndroidAnnotations2.7及以上版本
我们提供了一个静态的方法,让你启动生成的service:
// 启动service
MyService_.intent(context).start();
// 通过service创建一个intent
Intentintent=MyService_.intent(context).build();
// 你能在启动service时使用flags
MyService_.intent(context).flags(Intent.FLAG_GRANT_READ_URI_PERMISSION).start();
是否有任何性能影响呢?
简短的回答是没有。更多关于可查看常见问题。
现在你已经学习了基础知识,让我们再来看看如何让Activities更加强大。
AndroidAnnotations是由Pierre-Yves
Ricau创建,由eBusinessInformations赞助。
(注:本文阐述的只是它的工作方式,揭示了AndroidAnnotations是如何处理我们使用注解方式编写的代码。并不是你的代码要这样写)
相关文章推荐
- AndroidAnnotations 是如何工作的
- Androidannotations 是如何工作的
- AndroidAnnotations使用说明书—AndroidAnnotations是如何工作的?
- AndroidAnnotations——How It Works,AndroidAnnotation是如何工作的
- AndroidAnnotations说明—AndroidAnnotations它是如何工作的?
- AndroidAnnotations——How It Works,AndroidAnnotation是如何工作的
- Android上MediaScanner是如何工作的
- 测试架构师之路---实际工作中如何开展Android App性能自动化测试
- 如何配置androidannotations
- Android中当Logcat记录不到程序运行信息时,如何让Logcat重新工作?
- 电池寿命:Android“电池”工具是如何工作的
- 如何在qualcomm平台Android点亮一个LED工作流程分析
- iOS和Android的后台推送工作原理各是如何?
- android 如何调用WPS显示工作文件
- android里面,资源文件和资源ID之间的映射是如何工作的?
- android里面,资源文件和资源ID之间的映射是如何工作的?
- 【工作感悟】Android 开发者,如何提升自己的职场竞争力?
- 教你如何在Android Studio搭配androidannotations
- Android之AIDL的全称是什么?如何工作?能处理哪些类型的数据?