Android Annotations是一个开源框架,官方wiki文档里介绍了如下特性:
- Dependency injection(依赖注入):注入Views、System Services、Resources等等。
- Simplified threading model(简化事件模型):通过注解的方式来执行UI线程任务或者后台任务。
- Event binding(事件绑定):通过注解的方式监听事件。
- REST client:与服务器交互(本人暂未用到,故不详解)。
- No magic:在编译时生成子类,可以通过它了解这个框架是如何运行的。
以下是个人使用中遇到的一些问题,记录一下。
1.当使用此框架时,不应该在onCreate里写view变量,而是写在@AfterViews中,因为当onCreate执行的时候,@ViewById尚未执行,故找不到控件。
正常写法:
TextView tv;
onCreate(){
tv=findViewById();
tv.setText("AABB");
}
使用框架写法:
@ViewById
TextView tv;
@AfterViews
void handleText(){
tv.setText("AABB");
}
onCreate(){}
2.当使用@EFragment时,在Activity里new Fragment时要new Fragment_。
3.在Android Annotations 3.0以上的版本中,若使用到了Application则必须使用注解@EApplication,在AndroidManifest.xml文件中要使用"Application_"替代"Application"。如:
<application
android:name="com.aa.bb.CustomApplication_"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme">
</application>
4.注意区分异步线程,后台执行的应放在@Background下,更新UI线程的应放在@UiThead下。
5.使用@Extra来接收Intent传递的参数
6.带有回调方法的不要放在@UiThead下