从 Dagger 2 Documentation中,我注意到您可以有一个带有@Singleton
注释的类。我试图在代码中将类标记为@Singleton
的目的是什么,但是不会生成单例对象。我尚不清楚使用此注释标记类的用途。
从文档中,请重点关注以下声明:
@Singleton
class CoffeeMaker {
// ...
}
更新:检查完froger_mcs答案后,我看到在Dagger 2中,您可以通过模块或构造函数注入(inject)来提供注入(inject)。因此,可以插入以下类(尽管不在模块中):
@Singleton
public class MyClass {
@Inject
public MyClass() {
}
}
在此版本中,为我们注入(inject)了构造函数,并且在Android Activity 中,您只需执行以下操作即可提供它:
@Inject
MyClass myClass;
//then in onCreate actually inject(this) from your graph of course.
最佳答案
@Singleton
(和任何其他范围注释)使您的类成为依赖关系图中的单个实例(这意味着只要Component对象存在,此实例将是“单个”)。
简而言之-每次您注入(inject)带有@Singleton
注释的@Inject
注释的类时,只要您从同一Component注入(inject)它,它将是相同的实例。
有关更多信息,我引用我的博客文章有关Dagger 2中@Singleton
和其他作用域注释的工作方式:http://frogermcs.github.io/dependency-injection-with-dagger-2-custom-scopes/
关于dependency-injection - Dagger 2-@Singleton注释类的目的是什么,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31100041/