Скажем, у нас есть класс Counter
:В Dagger2, какова цель аннотации @Singleton?
public class Counter {
private int count;
public Counter() {
count = 0;
}
public int getCount() {
return count;
}
public void count() {
count++;
}
}
И ApplicationModule
, что обеспечивает счетчик:
@Module
public class ApplicationModule {
private Context context;
private Counter counter;
public ApplicationModule(Context context) {
this.context = context;
counter = new Counter();
}
@Provides @Singleton
public Counter provideCounter() {
return counter;
}
}
Добавляя @Singleton
аннотацию к методу provideCounter()
, вы указав, что только один объект счетчик предоставляться?
В том случае, если мы предлагаем два Counter
объекты:
@Module
public class ApplicationModule {
private Context context;
private Counter numberOfTimesButtonAWasPressed;
private Counter numberOfTimesButtonBWasPressed;
public ApplicationModule(Context context) {
this.context = context;
numberOfTimesButtonAWasPressed = new Counter();
numberOfTimesButtonBWasPressed = new Counter();
}
@Provides @Named("buttonACounter")
public Counter provideButtonACounter() {
return numberOfTimesButtonAWasPressed;
}
@Provides @Named("buttonBCounter")
public Counter provideButtonBCounter() {
return numberOfTimesButtonBWasPressed;
}
}
Будет ли @Singleton
аннотацию быть незаконным?
Большое вам спасибо! Это прояснило все! – AgileNinja