1. 设置Activity的布局

@EActivity(R.layout.main)
public class MyActivity extends Activity {}

注: 此时在AndroidManifest.xml 注册Activity需要: <activity android:name="MyActivity_" />

2. 设置及使用Application
设置:在AndroidManifest.xml也需要配置<application android:name="MyApplicaton_" />

@EApplication
public class MyApplication extends Application {}

使用:

@EActivity
public class MyActivity extends Activity {
@App
MyApplication application;
}

或者:

@EBean
public class MyBean {
@App
MyApplication application;
}

3. 普通类

@EBean
public class MyClass {}

注:这个普通只能有一个构造函数,这个构造函数要不是没有参数,或者只有一个Context的参数

使用: @Bean的标签每次都会创建一个实例,所以不能继承一个使用@EBean的类

@EBean
public class MyOtherClass {
@Bean
MyClass myClass;
}

声明接口的同时也实例化:

@EActivity
public class MyActivity extends Activity {
/* A MyImplementation instance will be injected.
* MyImplementation 必须使用标签 @EBean and 实现 MyInterface.
*/
@Bean(MyImplementation.class)
MyInterface myInterface;
}

在普通类中引入它所在的Activity或者Service的Context

@EBean
public class MyClass {
@RootContext
Context context;
// Only injected if the root context is an activity,else is null
@RootContext
Activity activity;
// Only injected if the root context is a service,else is null
@RootContext
Service service;
// Only injected if the root context is an instance of MyActivity,else is null
@RootContext
MyActivity myActivity;
}

使用标签@AfterViewInject, 会在所有依赖注入完成后才执行。

@EBean
public class MyClass {
@SystemService
NotificationManager notificationManager;
@Bean
MyOtherClass dependency;
public MyClass() {
// notificationManager and dependency are null
}
@AfterInject
public void doSomethingAfterInjection() {
// notificationManager and dependency 已经设置完成
}
}

注意,拥有父子关系的@AfterInject的方法名字不能相同

单例的普通类:

@EBean(scope = Scope.Singleton)
public class MySingleton {}

注意: 在单例的普通类如果需要使用context,请使用ApplicationContext。也不要在这里注入view或者是view的事件

Andorid之Annotation框架初使用(一)的更多相关文章

  1. Andorid之Annotation框架初使用(六)

    EVENT @Click :点击事件,只能有0个或1个参数,且参数为View @Click(R.id.myButton) void myButtonWasClicked() { [...] } @Cl ...

  2. Andorid之Annotation框架初使用(七)

    Save Instance State:程序保留Activity的实例状态 , 在onSaveInstanceState(Bundle)被系统调用的时候自动保存 , onCreate(Bundle)被 ...

  3. Andorid之Annotation框架初使用(五)

    注入res文件夹的资源: @StringRes @EActivity public class MyActivity extends Activity { @StringRes(R.string.he ...

  4. Andorid之Annotation框架初使用(四)

    代替繁琐的finViewById @EActivity public class MyActivity extends Activity { // Injects R.id.myEditText @V ...

  5. Andorid之Annotation框架初使用(三)

    线程使用: @Background这个是使用了cached thread pool executor , 阻止开启过多的线程 可以为@Background指定一个id,用于随时终止线程的操作(Back ...

  6. Andorid之Annotation框架初使用(二)

    Fragment: @EActivity(R.layout.fragments) public class MyFragmentActivity extends FragmentActivity { ...

  7. AVFoundation 框架初探究(二)

    接着第一篇总结 系列第一篇地址:AVFoundation 框架初探究(一) 在第一篇的文章中,我们总结了主要有下面几个点的知识: 1.对AVFoundation框架整体的一个认识 2.AVSpeech ...

  8. dubbo框架----初探索-配置

    使用框架版本 dubbo-2.5.3 spring-4.2.1.RELEASE jdk-1.8 tomcat-8.0 zookeeper-3.3.6 Dubbo与Zookeeper.SpringMVC ...

  9. PHP Slim 框架初体验之无法访问控制器

    话不多说,先把报错贴出来: 刚开始用slim框架,在设置完自动加载文件和路由文件之后,我写了一个控制器: <?php use \Psr\Http\Message\ServerRequestInt ...

随机推荐

  1. wordpress技术-禁止订阅用户访问后台

    begin主题虽然有个功能,但是只是少了入口,实际上测试还是可以进入后台的,那么怎么彻底解决呢?一时半会没思路,百度了下,果然有人贴出了代码. 把下面代码黏贴到主题的模板函数文件里即可: if ( i ...

  2. netty 基础知识

    http://my.oschina.net/bieber/blog/406799 线程模型 http://hongweiyi.com/2014/01/netty-4-x-thread-model/ h ...

  3. ASP.NET WebAPI 05 参数绑定

    ParameterBindingAttribute 在上一篇中重点讲了ModelBinderAttribute的使用场景.这一篇详细的讲一下ModelBinder背后的参数绑定原理. ModelBin ...

  4. javax.persistence.EntityNotFoundException: Unable to find报错

    这类错id 可能是10,可能是27,也可能是其他数字 错误描述: javax.persistence.EntityNotFoundException: Unable to find 某个类 with ...

  5. bzoj 1415 期望dp + 记忆化搜索

    思路:这个题看着感觉不能dp,其实是可以dp的,因为狼每次走两步,兔子每次走一步,每进行一轮以后,狼和兔子的距离 肯定是在接近的,没有相同的状态,dp之前预处理出来,每一步狼该往哪里走. #inclu ...

  6. 使用Unity解耦你的系统—PART3——依赖注入

    继续学习Unity,在前几篇中已经将Unity的使用方法做了一个还算详细的介绍了,主要是如何通过代码及配置文件来注册对象之间的关系.Unity内置所有的生命周期管理使用介绍,及Unity的Regist ...

  7. Join 与 CountDownLatch 之间的区别

    Join 与 CountDownLatch 之间的区别 import java.util.concurrent.CountDownLatch; public class CountDownLatchT ...

  8. GNU Wget 1.19.4 for Windows

    资源地址:https://eternallybored.org/misc/wget/ 然后将工具目录加入环境变量

  9. 【C++初级】static用法总结、问题探讨及常见错误排查

    static的基本用法: static的作用主要有两种第一个作用是限定作用域:第二个作用是保持变量内容持久化: 一.c语言中static的用法: 1.全局静态变量: 用法:在全局变量前加上关键字sta ...

  10. Bzoj1202/洛谷P2294 [HNOI2005]狡猾的商人(带权并查集/差分约束系统)

    题面 Bzoj 洛谷 题解 考虑带权并查集,设\(f[i]\)表示\(i\)的父亲(\(\forall f[i]<i\)),\(sum[i]\)表示\(\sum\limits_{j=fa[i]} ...