AndroidAnnotations使用说明书—AndroidAnnotations是如何工作的?
源码是什么?每一个增强的类,比如每一个用@EActivity注入的Activity,会自动生成一个以该类类名+下划线为类名的该Activity子类。
比如下面这个类:
package com.some.company; @EActivity public class MyActivity extends Activity { // ... }
将会生成下面这个子类,他们在同一个包下面但处在不同的文件夹:
package com.some.company; public final class MyActivity_ extends MyActivity { // ... }
这个子类通过复写一些方法(比如onCreate())来为你的activity增加一些行为。
上面介绍的这些就是你在AndroidManifest.xml生命Acitivty时需要为你的类名后面增加一个下划线的原因:
<activity android:name=".MyListActivity_" />
启动一个使用注入的Activity:
在Android中,我们通常会通过如下的方式来启动一个activity:
startActivity(this, MyListActivity.class);然而,如果使用AndroidAnnotations的话,真正被启动的activity是MyListActivity_而不是MyListActivity:
startActivity(this, MyListActivity_.class);
Intent Builder(AndroidAnnotations 2.4及以上):
我们提供了一个静态的帮助类来启动编译生成的activity:
// Starting the activity MyListActivity_.intent(context).start(); // Building an intent from the activity Intent intent = MyListActivity_.intent(context).get(); // You can provide flags MyListActivity_.intent(context).flags(FLAG_ACTIVITY_CLEAR_TOP).start(); // You can even provide extras defined with @Extra in the activity MyListActivity_.intent(context).myDateExtra(someDate).start();
在AndroidAnnotations 2.7及以上的版本中你可以使用另一个启动Activity的方法startActivityForResult()了 :
MyListActivity_.intent(context).startForResult();
启动一个使用注解的服务:
在Android中,我们通常通过如下的方式来启动一个服务:
startService(this, MyService.class);
然而,如果使用AndroidAnnotations的话,真正被启动的Service是MyService_而不是MyService:
startService(this, MyService_.class);
Intent Builder(AndroidAnnotations 2.7及以上版本):
我们提供了一个静态的帮助类来启动生产的Service:
// Starting the service MyService_.intent(context).start(); // Building an intent from the activity Intent intent = MyService_.intent(context).build(); // You can provide flags MyService_.intent(context).flags(Intent.FLAG_GRANT_READ_URI_PERMISSION).start();
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。