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