Ich habe wahrscheinlich etwas verpasst, aber ich dachte Scopes wie @Singleton werden verwendet, um "begrenzte Lebenszyklen" zu definieren.Scopes in Dagger 2
Ich benutze Dolch 2 in einer Android-App (aber ich glaube nicht, dass das Problem überhaupt Android ist).
Ich habe 1 Modul:
@Module public class MailModule {
@Singleton @Provides public AccountManager providesAccountManager() {
return new AccountManager();
}
@Singleton @Provides public MailProvider providesMailProvider(AccountManager accountManager) {
return new MailProvider(accountManager);
}
}
Ich habe zwei verschiedene Komponenten mit @Singleton
-umfang:
@Singleton
@Component(modules = MailModule.class)
public interface LoginComponent {
public LoginPresenter presenter();
}
@Singleton
@Component(
modules = MailModule.class
)
public interface MenuComponent {
MenuPresenter presenter();
}
Sowohl MenuPresenter
und LoginPresenter
, haben einen @Inject
Konstruktor. Während MenuPresenter MailProvider
als Parameter erwartet, nimmt LoginPresenter eine AccountManager
:
@Inject public MenuPresenter(MailProvider mailProvider) { ... }
@Inject public LoginPresenter(AccountManager accountManager) { ... }
Aber jedes Mal, verwende ich die Komponenten a MenuPresenter
oder LoginPresenter
ich eine frische neue Instanz von MailProvider
und AccountManager
erhalten zu schaffen. Ich dachte, sie wären im gleichen Umfang und sollten daher eine Art Singleton sein (im selben Umfang).
Habe ich etwas völlig falsch verstanden. Wie definiere ich einen echten Singleton für mehrere Komponenten in Dolch 2?
Aber eine Komponente kann nur eine Scope-Annotation haben, oder? Wie würde ich das tun, wenn ich eine Anwendungskomponente mit '@ Application' und LoginComponent mit' @Activity' Scope hätte? – sockeqwe
Rechts. Die Komponente kann nicht mit zwei Bereichen kommentiert werden. Die Aktivitätsumfangskomponente würde alle Abhängigkeiten von der Anwendungsumfangskomponente haben, wenn sie in der Annotation '@Component (Abhängigkeiten = ApplicationComponent.class) 'definiert ist. Stellen Sie sich Komponenten mit Bereichen als Graphen und Untergraphen vor. Anwendungskomponente und ihr Gültigkeitsbereich - Wurzelgraph, Aktivitätskomponente und ihr Gültigkeitsbereich - Untergraph der Wurzel. –
Ermöglicht es die Verwendung von '' @ @ Singleton''' Zielfernrohr, '' '@ Application''' Abhängigkeiten in' '' Activity''' Geltungsbereich zu injizieren? Ein Beispiel wäre, wenn MyPresenter von '' '@ Application''' ist und ich es in MyActivity mit dem' '' @ Activity''-Bereich einspeisen möchte. – AAverin