android @Singleton vs @InstallIn(SingletonComponent::class)

rdlzhqv9  于 2023-06-28  发布在  Android
关注(0)|答案(3)|浏览(182)

这两个有什么区别?我认为它们都注解了单例对象/示例,但不知何故,@Singleton可以用来注解方法,而不是类。我对他们两个都很困惑。

x759pob2

x759pob21#

@SingletonComponent指定它可以在整个应用程序中使用。
@Singleton是一种软件设计模式,它使对象被初始化一次。

eblbsuwk

eblbsuwk2#

ApplicationComponent被重命名为SingletonComponent,以允许在非Android Gradle模块中使用Hilt link
但是@Singleton是一个软件设计模式link

gz5pxeao

gz5pxeao3#

指定为@InstallIn(SingletonComponent::class)的模块中提供的组件示例在整个应用程序生命周期中存在。因此,它指的是组件的生命周期。
在使用注入(如字段或构造函数)时,Hilt提供了组件的示例。如果我们希望这些组件也只创建一次,我们应该添加@Singleton范围注解。如果我们不添加这个,就会不断创建新的示例。
但是,确定组件绑定的作用域可能代价很高,因为所提供的对象会一直保留在内存中,直到该组件被销毁。这就是为什么默认情况下,Hilt中的所有绑定都是无作用域的,你需要根据自己的需要使用它们。您可以在Android官方网站上阅读详细信息。

相关问题