Dagger2,破坏自定义范围模块

时间:2015-09-20 14:30:20

标签: android dagger-2

使用Dagger2时,我定义了@ActivityScope

    @Scope
    @Retention(RUNTIME)
    public @interface ActivityScope { }

并在ActivityModule中实例化相应的Activity.onCreate(),如下所示。

    mActivityComponent = DaggerActivityComponent.builder()
        .activityModule(new ActivityModule(this))
        .build();

通过这样做,我将模块的生命周期附加到活动的生命周期中。将为每个新活动创建所有模块的实例。在这方面一切正常。

我的实际问题是,当活动被实际销毁时,销毁模块组件(例如删除服务回调等)的正确/最佳方法是什么? Dagger2本身是否为此提供了任何内容?

1 个答案:

答案 0 :(得分:4)

@Scope注释提供了编译时验证,并且在模块提供程序方法上,它使Dagger2创建了一个范围提供程序,允许在该特定组件中为每个范围创建一个实例。

它实际上并没有做更多的事情,所以如果您需要显式取消注册活动中的回调,那么您应该在活动中注入这些依赖项,并在onDestroy()中自己手动取消注册它们。