匕首2中的示波器
我可能错过了一些东西,但我认为像@Singleton这样的作用域用于定义“作用域生命周期”。
我在Android应用程序中使用Dagger 2(但我认为问题根本不与Android有关)。
我有 1 个模块:
@Module public class MailModule {
@Singleton @Provides public AccountManager providesAccountManager() {
return new AccountManager();
}
@Singleton @Provides public MailProvider providesMailProvider(AccountManager accountManager) {
return new MailProvider(accountManager);
}
}
我有两个不同的组件与范围:@Singleton
@Singleton
@Component(modules = MailModule.class)
public interface LoginComponent {
public LoginPresenter presenter();
}
@Singleton
@Component(
modules = MailModule.class
)
public interface MenuComponent {
MenuPresenter presenter();
}
和 都有一个构造函数。当 MenuPresenter 期望作为参数时,LoginPresenter 采用 :MenuPresenter
LoginPresenter
@Inject
MailProvider
AccountManager
@Inject public MenuPresenter(MailProvider mailProvider) { ... }
@Inject public LoginPresenter(AccountManager accountManager) { ... }
但是每次我使用这些组件创建一个或我得到一个全新的和实例时。我认为它们在同一范围内,因此应该是单例(在同一范围内)。MenuPresenter
LoginPresenter
MailProvider
AccountManager
我是否完全理解了什么错误。如何在匕首 2 中为多个组件定义真正的单例?