从 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/

10-12 04:10
查看更多