从匕首2 文档中,我注意到您可以有一个带@Singleton
注释的类。@Singleton
正如我在代码中尝试这样做但未生成单例对象那样,将类标记为目的是什么。我不清楚使用此注释标记类的用途。
从文档中,请重点关注以下声明:
可注射类上的@Singleton注释也可用作文档。它提醒潜在的维护者此类可以被多个线程共享。*
@Singleton
class CoffeeMaker {
// ...
}
更新:检查完froger_mcs答案后,我看到在Dagger 2中,您可以通过模块或构造函数注入来提供注入。因此,可以插入以下类(尽管不在模块中):
@Singleton
public class MyClass {
@Inject
public MyClass() {
}
}
在此版本中,构造函数已为我们注入,在Android活动中,您只需执行以下操作即可提供:
@Inject
MyClass myClass;
//then in onCreate actually inject(this) from your graph of course.
@Singleton
(以及任何其他范围注释)使您的类成为依赖关系图中的单个实例(这意味着只要Component对象存在,此实例将是“单个”)。
简而言之-每次您注入带@Singleton
注释的类(带有@Inject
注释)时,只要您从同一Component注入它,它将是相同的实例。
有关更多信息,我将引用我的博客文章有关@Singleton
Dagger 2中的作用域注释和其他作用域注释如何工作:http : //frogermcs.github.io/dependency-injection-with-dagger-2-custom-scopes/
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句