首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有RunTime SubComponent的Dagger 2单例组件

带有RunTime SubComponent的Dagger 2单例组件
EN

Stack Overflow用户
提问于 2015-10-19 18:40:35
回答 1查看 885关注 0票数 1

我正在构建一个使用Dagger 2的应用程序。

因此,我的应用程序组件如下所示:

代码语言:javascript
复制
@Singleton
@Component(modules = {ApplicationModule.class})
public interface ApplicationComponent {

    // Exported for child-components.
    Application application ();

    final class Initializer {
        public static ApplicationComponent init (Application app) {
            return DaggerApplicationComponent.builder()
                    .applicationModule(new ApplicationModule(app)).build();
        }

        private Initializer () {
        } // No instances.
    }


    ConnectorComponent plus(ConnectorModule module);

    ... injections

}

它的作用域为@Singleton,因此它在应用程序生命周期中是唯一的。

然后,我有了另一个组件,它应该能够使用上面组件提供的所有依赖项,但是可以使用@PerActivity作用域来提供它的依赖项:

代码语言:javascript
复制
@Scope
@Retention(RUNTIME)
public @interface PerActivity {}

看上去像这样

代码语言:javascript
复制
@PerActivity
@Subcomponent(modules = ConnectorModule.class)
public interface ConnectorComponent  {

    ... injections
}

问题是。如何确保@Singleton提供的所有内容都作为依赖项上的单例传递给ConnectorModule?另外,如何确保ApplicationComponent中的方法ApplicationComponent总是添加我想要的新模块( @PerActivity)?

最后,谁能想到一种策略,在所有活动中都使用这个(这在@PerAcitivity作用域中是有意义的),而不必每次使用新的plus调用ConnectorModule?

EN

回答 1

Stack Overflow用户

发布于 2015-10-20 16:13:04

如何确保@Singleton提供的所有内容都作为依赖项上的单例传递给ConnectorModule?

Dagger将确保任何@Singleton-annotated类型或ApplicationModule中的@Provides方法在构建的DaggerApplicationComponent生命周期内只提供一次,即使ConnectorComponent中的绑定使用它。

如何确保ApplicationComponent中的方法加号总是添加我想要的新模块( @PerActivity)?

我不知道你在问什么。当您调用plus时,您必须亲自传递ConnectorModule的一个实例。

有人能想到一种策略来在所有的活动中使用这个(这与@PerAcitivity作用域一起使用是有意义的),而不必每次使用一个新的ConnectorModule调用plus?

ConnectorModule是否在其构造函数中使用参数?如果不是,您可以将它排除在plus方法的参数之外,而Dagger将为您构造一个参数。

但是,仍然必须调用plus方法才能获得活动的子组件的实例。这就是如何使@PerActivity作用域工作:有一个ConnectorComponent实例,该范围与该实例的生存期相关联。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33221584

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档