Первый раз использую Dagger2.
В моем приложении для Android у меня есть класс MyApplication, который расширяет Application. У меня также есть класс ImageAssistant, представляющий собой набор связанных методов обработки изображений. В моем классе MyApplicaiton я создавал экземпляр ImageAssistant для всех используемых действий.
Теперь я пытаюсь заставить его работать с Dagger2, но я не знаю, как передать контекст в модуль, который предоставляет ImageAssistant
Вот как выглядел мой код:
public class ImageAssistant {
Context context;
public ImageAssistant(Context context){
this.context = context;
}
// A bunch of methods...
}
public class MyApplication extends Application {
public ImageAssistant imageAssistant;
public void onCreate() {
imageAssistant = new ImageAssistant(this);
}
}
Теперь введите Dagger 2, вот что у меня есть
public class ImageAssistant {
Context context;
@Inject
public ImageAssistant(Context context){
this.context = context;
}
// A bunch of methods...
}
public class MyApplication extends Application {
@Inject
public ImageAssistant imageAssistant;
public void onCreate() {
}
}
в пакете .modules:
AppModule.java
@Module
public class AppModule {
@Provides
ImageAssistant provideImageAssistant() {
return new ImageAssistant(); // HERE A CONTEXT IS NEEDED. WHERE TO GET IT FROM?
}
}
РЕДАКТИРОВАТЬ: Вот как сейчас выглядит мой модуль, но я до сих пор не знаю, как связать все вместе:
@Module
public class AppModule {
private MyApplication application;
public AppModule(MyApplication application) {
this.application = application;
}
@Provides
Context provideApplicationContext() {
return this.application;
}
@Provides
ImageAssistant provideImageAssistant(ImageAssistant imageAssistant) {
return imageAssistant;
}
}
А это AppComponent:
@Singleton
@Component(modules = {AppModule.class})
public interface AppComponent {
ImageAssistant provideImageAssistant();
Context context();
}