dependencies {
...
implementation 'com.google.dagger:dagger:2.x'
annotationProcessor 'com.google.dagger:dagger-compiler:2.x'
}
public class MainActivity extends AppCompatActivity {
@Inject
ApiService apiService;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
DaggerAppComponent.create().inject(this);
}
}
@Component(modules = {ApiModule.class})
public interface AppComponent {
void inject(MainActivity activity);
}
@Module
public class ApiModule {
@Provides
ApiService provideApiService() {
return new ApiService();
}
}
public class ApiService {
}
@Singleton
@Component(modules = {AppModule.class})
public interface AppComponent {
void inject(MyApplication application);
ApiService apiService();
}
@Module
public class AppModule {
private final MyApplication application;
public AppModule(MyApplication application) {
this.application = application;
}
@Provides
@Singleton
MyApplication provideApplication() {
return application;
}
@Provides
@Singleton
ApiService provideApiService() {
return new ApiService();
}
}
public class MyApplication extends Application {
private AppComponent appComponent;
@Override
public void onCreate() {
super.onCreate();
appComponent = DaggerAppComponent.builder().appModule(new AppModule(this)).build();
}
public AppComponent getAppComponent() {
return appComponent;
}
}