依赖注入:
@HiltAndroidApp
class ExampleApplication : Application() { ... }
对于Application 可以使用 @HiltAndroidApp 表名他会生成Hit组件附加到Application对象的声明周期,并为其提供依赖项
将依赖项注入 Android 类``
在 Application
类中设置了 Hilt 且有了应用级组件后,Hilt 可以为带有 @AndroidEntryPoint
注释的其他 Android 类提供依赖项:
@AndroidEntryPoint
class ExampleActivity : AppCompatActivity() { ... }
Hilt 目前支持以下 Android 类:
Application
(通过使用@HiltAndroidApp
)Activity
Fragment
View
Service
BroadcastReceiver
如果您使用 @AndroidEntryPoint
为某个 Android 类添加注释,则还必须为依赖于该类的 Android 类添加注释。例如,如果您为某个 Fragment 添加注释,则还必须为使用该 Fragment 的所有 Activity 添加注释。
如需从组件获取依赖项,请使用 @Inject
注释执行字段注入:
@AndroidEntryPoint
class ExampleActivity : AppCompatActivity() {
@Inject lateinit var analytics: AnalyticsAdapter
...
}
注意:由 Hilt 注入的字段不能为私有字段。尝试使用 Hilt 注入私有字段会导致编译错误。
个人理解:@HiltAndroidApp
和 @AndroidEntryPoint
注解相当于spring中的compoment @Inject
相当于@controller
注解
定义 Hilt 绑定
为了执行字段注入,Hilt 需要知道如何从相应组件提供必要依赖项的实例。“绑定”包含将某个类型的实例作为依赖项提供所需的信息。
向 Hilt 提供绑定信息的一种方法是构造函数注入。在某个类的构造函数中使用 @Inject
注释,以告知 Hilt 如何提供该类的实例:
class AnalyticsAdapter @Inject constructor(
private val service: AnalyticsService
) { ... }