Dagger 和 Android 上下文限定符

Dagger and Android context qualifiers

我最近一直在我的项目中使用 Dagger,同时使用这些示例作为指南:

https://github.com/square/dagger/tree/master/examples

但是他们有一点我无法理解。他们使用 @ForActivity@ForApplication 限定符来明确区分 Context 的那些类型,但他们从不在任何依赖项中 @Inject 它们?这是怎么回事?在这个例子中是不是被忽视了?如果是这样,那就太误导了。

那么我将如何在任何依赖项中注入它们? @Inject Dependency dependency 是否足够并且它会自行解析正确的类型?

要在 @ForActivity 案例中注入上下文,您必须:

@Inject @ForActivity Context context;

这是一个 post 解释:

与使用@Named 注解的结果相同。

您可以在您的模块中使用它:

@Provides @Singleton @Named("foractivity") Context provideActivityContext() {
  return activity;
}

然后使用:

@Inject @Named("foractivity") Context context;