Androidannotations 是如何工作的

AndroidAnnotations是如何工作的

20142 By Hiperion

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,真正被启动的activityMyListActivity_

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是如何处理我们使用注解方式编写的代码。并不是你的代码要这样写)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值