dagger-android自定义范围

Car*_*ues 7 android dagger dagger-2

我对使用dagger-android的Dagger中的范围依赖感到困惑.

使用@ContributesAndroidInjetor我有一个类似如下的代码:

@Module
public abstract class ActivityBindingModule {

    @ContributesAndroidInjector(modules = PotatoesModule.class)
    public abstract MainActivity contributeMainActivityInjector();

    @ContributesAndroidInjector
    public abstract UserActivity contributeUserActivity();
}
Run Code Online (Sandbox Code Playgroud)

ActivityBindingModule在我的AppComponent中定义为一个模块.但问题是.我该怎么办呢

@UserScope
@Component(dependencies = AppComponent.class)
public interface UserComponent {...}
Run Code Online (Sandbox Code Playgroud)

并注释一个Activity来使用该范围?我的所有依赖都是活动"本地单身人士"吗?因为每个Activity注入器都是AppComponent的子组件.

也许我不理解使用dagger-android的"范围"的概念,如果有人能够解释它,我会很高兴.

are*_*lek 0

我的所有依赖项都在活动“本地单例”中吗?因为每个Activity注入器都是AppComponent的子组件。

dagger-android 生成的子组件是无作用域的,除非您@ContributesAndroidInjector使用作用域注释 -annotated 方法。

但问题是。我怎样才能做类似的事情... @Component(dependencies = AppComponent.class) ...并注释活动以使用该范围?

据我所知,你只能将子组件与 dagger-android 一起使用。此外,活动子组件必须在应用程序组件中安装的模块中声明,而片段子组件可以在应用程序、活动或片段组件中安装的模块中声明。

不过,我不确定“注释活动以使用该范围”是什么意思。