Hilt是否替代Dagger2?

16
深入了解Google的DI框架Dagger2,以决定在中等规模的应用程序中使用哪个DI框架时,我也注意到了Hilt
因此根据其概述描述:
Hilt通过为您生成代码来生成Dagger设置代码。这消除了使用Dagger的大部分样板文件,只留下定义如何创建对象和在哪里注入它们的方面。Hilt将为您生成Dagger组件和自动注入Android类(例如活动和片段)的代码。
Hilt基于您的传递类路径生成一组标准的Android Dagger组件。这需要使用Hilt注释标记Dagger模块,以告诉Hilt它们应该进入哪个组件。在Android框架类中获取对象是通过使用另一个Hilt注释完成的,该注释将在您扩展的基类中生成Dagger注入代码。对于Gradle用户,通过字节码转换来扩展此类。
1. 它既不替代Dagger2,也不是其继任者?
2. Hilt是Dagger2的附加内容,可以简化Dagger2的使用?
3. 除了它仍处于Alpha版之外,还有什么缺点吗?
2个回答

19
Hilt并没有取代Dagger2,仍然在其基础上进行扩展。可以将其视为Android的一个“有见解的Dagger扩展”。它有一些限制,这使得使用Hilt比使用普通Dagger更加严格,但同时也减少了大部分使用Dagger时的样板代码。Hilt不是Dagger2的替代品或后继者,而是Dagger2的附加功能,简化了Dagger2的使用。缺点是目前仍处于Alpha版本,可能会发生变化。使用Hilt应该更简单,因为它有严格的组件关系结构,并且可以消除一些样板代码,从而使设置更简洁。但是,这也是它的缺点,因为Hilt限制了预定义结构,可能在大型复杂项目中不够强大

12

Hilt基于一个单一的中心核心思想。这个核心是ApplicationComponent,每个子组件都为它生成的代码作出了贡献。在使用Dagger将大量gradle模块连接起来开发大型项目的背景下,以下是一些关键点:

  • 如果你将所有内容放入一个单一的AppComponent中,构建速度会非常慢。Dagger-Android和Hilt都这样做。它们只是通过一堆子组件扩展AppComponent,并提供它们自己的绑定和实体。子组件越多,子组件就越大->AppComponent和构建时间就越大。

  • 另一方面,纯Dagger是高度可配置的。你可以选择使用组件依赖而不是子组件,并避免让你的AppComponent被任何功能的绑定膨胀。你可以保持你的功能高度解耦。因此,减少构建时间。这实际上很重要。

在我看来,对于新手和快速开始进行一些MVP,Hilt是一个不错的选择。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接