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的事件