我应该在Dagger2和Kotlin中使用@Singleton,对象还是同时使用@

问题描述 投票:1回答:1

[我正在使用Kotlin和Dagger2做一个应用,试图遵循MVVM模式,但是我陷入了困境,我应该使用@Singleton,对象还是同时使用两者?又为什么呢?假设我有一个RepositoryMovies类,并且每次都想获取相同的实例,根据我的研究,您可以按照以下步骤进行操作:

@ Singleton(Dagger2方式)

@Singleton
class RepositoryMovies {
    TODO()
}

对象(科特林方式)

object RepositoryMovies {
    TODO()
}

两者

@Singleton
object RepositoryMovies {
    TODO()
}

并且不要让我从“ Java之路”之后的Kotlin的单例开始。多谢您的协助。非常感谢。

android kotlin singleton dagger
1个回答
2
投票

注入object没有多大意义,因为在kotlin中,object用于模拟Java的实用程序classes,例如Java的ArraysCollections classes。此类的一个定义特征是,它们与项目中的任何特定class不相关,可以在任何地方使用它们。

另一方面,在大多数实际情况下,repository将与特定的class相关联。例如,您可能只想在UserRepository中插入UserViewModel,因为这是您唯一需要访问用户信息的地方。

[对于object@Singleton,根据定义,objectsingleton,因此用@Singleton标记是多余的,并且在您通过@Provides使其可注射之前无法完成任何操作] function。您必须在哪里指定,如何用匕首创建此类的instances

在您的第一个示例中,标记类@Singleton不会执行任何操作,除非它是可注入的。作为文档状态。

Singletons和作用域绑定] >>

用@Singleton注释@Provides方法或可注入类

。该图将使用该值的单个实例所有的客户。
© www.soinside.com 2019 - 2024. All rights reserved.