为什么我要在 Dagger 2 中使用我自己定义的范围而不是 @Singleton?

Mik*_*ell 5 android dagger-2

在 Dagger 2 中,您可以创建范围。为什么我要使用 @Singleton 注释来做这个?

例如,此代码来自 u2020(最初由 Jake Wharton 创建)的一个分支。它定义了一个应用范围:

@Scope
@Retention(RetentionPolicy.RUNTIME)
public @interface ApplicationScope {
}
Run Code Online (Sandbox Code Playgroud)

这里我们有另一个定义 Gallery 作用域的作用域:

@Scope
@Retention(RetentionPolicy.RUNTIME)
public @interface GalleryScope {
}
Run Code Online (Sandbox Code Playgroud)

所有源代码都可以在这里找到:u2020 using Dagger 2

区别是字面上的语义,它们都做同样的事情吗?

谢谢。