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;
我最近一直在我的项目中使用 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;