Dagger 2-@Singleton注释类的目的是什么

j2emanue:

从匕首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.
froger_mcs:

@Singleton (以及任何其他范围注释)使您的类成为依赖关系图中的单个实例(这意味着只要Component对象存在,此实例将是“单个”)。

简而言之-每次您注入带@Singleton注释的类(带有@Inject注释)时,只要您从同一Component注入它,它将是相同的实例。

有关更多信息,我将引用我的博客文章有关@SingletonDagger 2中的作用域注释和其他作用域注释如何工作:http : //frogermcs.github.io/dependency-injection-with-dagger-2-custom-scopes/

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章