Enhancing the Application class - WonderCsabo/androidannotations GitHub Wiki

Since AndroidAnnotations 2.4

You can enhance your Android Application class with the @EApplication annotation:

@EApplication
public class MyApplication extends Application {

}

You can then start using most AA annotations, except the ones related to views and extras:

@EApplication
public class MyApplication extends Application {

  public void onCreate() {
    super.onCreate();
    initSomeStuff();
  }

  @SystemService
  NotificationManager notificationManager;

  @Bean
  MyEnhancedDatastore datastore;

  @RestService
  MyService myService;
  
  @OrmLiteDao(helper = DatabaseHelper.class, model = User.class)
  UserDao userDao;

  @Background
  void initSomeStuff() {
    // init some stuff in background
  }
}

Injecting your application class

Since AndroidAnnotations 2.1

You can inject the application class using the @App annotation:

@EActivity
public class MyActivity extends Activity {

  @App
  MyApplication application;

}

It also works for any kind of annotated component, such as @EBean:

@EBean
public class MyBean {

  @App
  MyApplication application;

}

Since AndroidAnnotations 3.0, the application class must be annotated with @EApplication.

Method based injection

Since AndroidAnnotations 4.0.0

@EBean
public class MyBean {

  @App
  void setApplication(MyApplication application){
    // do something with application
  }

}