依赖注入:

  1. @HiltAndroidApp
  2. class ExampleApplication : Application() { ... }

对于Application 可以使用 @HiltAndroidApp 表名他会生成Hit组件附加到Application对象的声明周期,并为其提供依赖项

将依赖项注入 Android 类``

Application 类中设置了 Hilt 且有了应用级组件后,Hilt 可以为带有 @AndroidEntryPoint 注释的其他 Android 类提供依赖项:

  1. @AndroidEntryPoint
  2. class ExampleActivity : AppCompatActivity() { ... }

Hilt 目前支持以下 Android 类:

  • Application(通过使用 @HiltAndroidApp
  • Activity
  • Fragment
  • View
  • Service
  • BroadcastReceiver

如果您使用 @AndroidEntryPoint 为某个 Android 类添加注释,则还必须为依赖于该类的 Android 类添加注释。例如,如果您为某个 Fragment 添加注释,则还必须为使用该 Fragment 的所有 Activity 添加注释。
如需从组件获取依赖项,请使用 @Inject 注释执行字段注入:

  1. @AndroidEntryPoint
  2. class ExampleActivity : AppCompatActivity() {
  3. @Inject lateinit var analytics: AnalyticsAdapter
  4. ...
  5. }

注意:由 Hilt 注入的字段不能为私有字段。尝试使用 Hilt 注入私有字段会导致编译错误。
个人理解@HiltAndroidApp@AndroidEntryPoint注解相当于spring中的compoment @Inject 相当于@controller 注解

定义 Hilt 绑定

为了执行字段注入,Hilt 需要知道如何从相应组件提供必要依赖项的实例。“绑定”包含将某个类型的实例作为依赖项提供所需的信息。
向 Hilt 提供绑定信息的一种方法是构造函数注入。在某个类的构造函数中使用 @Inject 注释,以告知 Hilt 如何提供该类的实例:

  1. class AnalyticsAdapter @Inject constructor(
  2. private val service: AnalyticsService
  3. ) { ... }