Enabling Dependency Injection

Once you have configured the classpath correctly, the next step is start the ApplicationContext.

The following example demonstrates creating a subclass of android.app.Application for that purpose:

Example Android Application Class

  1. import android.app.Activity;
  2. import android.app.Application;
  3. import android.os.Bundle;
  4. import io.micronaut.context.ApplicationContext;
  5. import io.micronaut.context.env.Environment;
  6. public class BaseApplication extends Application { (1)
  7. private ApplicationContext ctx;
  8. @Override
  9. public void onCreate() {
  10. super.onCreate();
  11. ctx = ApplicationContext.run(MainActivity.class, Environment.ANDROID); (2)
  12. registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() { (3)
  13. @Override
  14. public void onActivityCreated(Activity activity, Bundle bundle) {
  15. ctx.inject(activity);
  16. }
  17. ... // shortened for brevity; it is not necessary to implement other methods
  18. });
  19. }
  20. }
1Extend the android.app.Application class
2Run the ApplicationContext with the ANDROID environment
3Register an ActivityLifecycleCallbacks instance to allow dependency injection of Android Activity instances