[我正在使用Kotlin和Dagger2做一个应用,试图遵循MVVM模式,但是我陷入了困境,我应该使用@Singleton,对象还是同时使用两者?又为什么呢?假设我有一个RepositoryMovies类,并且每次都想获取相同的实例,根据我的研究,您可以按照以下步骤进行操作:
@ Singleton(Dagger2方式)
@Singleton
class RepositoryMovies {
TODO()
}
对象(科特林方式)
object RepositoryMovies {
TODO()
}
两者
@Singleton
object RepositoryMovies {
TODO()
}
并且不要让我从“ Java之路”之后的Kotlin的单例开始。多谢您的协助。非常感谢。
注入object
没有多大意义,因为在kotlin中,object
用于模拟Java的实用程序classes
,例如Java的Arrays
或Collections
classes
。此类的一个定义特征是,它们与项目中的任何特定class
不相关,可以在任何地方使用它们。
另一方面,在大多数实际情况下,repository
将与特定的class
相关联。例如,您可能只想在UserRepository
中插入UserViewModel
,因为这是您唯一需要访问用户信息的地方。
[对于object
和@Singleton
,根据定义,object
是singleton
,因此用@Singleton
标记是多余的,并且在您通过@Provides
使其可注射之前无法完成任何操作] function
。您必须在哪里指定,如何用匕首创建此类的instances
?
在您的第一个示例中,标记类@Singleton
不会执行任何操作,除非它是可注入的。作为文档状态。
Singletons和作用域绑定] >>
用@Singleton注释@Provides方法或可注入类
。该图将使用该值的单个实例所有的客户。