依赖注入 - hilt,面试字节跳动Android工程师该怎么准备

Hilt 目前支持注入的 Android 类共有如下 6 种:

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

Application 需要 @HiltAndroidApp 修饰外,其他需要依赖注入的类都需要添加 @AndroidEntryPoint 注解。

@AndroidEntryPoint
class MainHiltActivity: AppCompatActivity() {
}

注意:

  • Hilt 仅支持扩展 ComponentActivityActivity,如 AppCompatActivity
  • Hilt 仅支持扩展 androidx.FragmentFragment
  • Hilt 不支持保留的 Fragment
@Inject

接下来就可以通过 @Inject 来执行注入了:

@AndroidEntryPoint
class MainHiltActivity: AppCompatActivity() {

@Inject
lateinit var capBean: CapBean
}

注意:由 Hilt 注入的字段不能为私有字段。

到这里还并不能完成 capBean 字段的注入,这时 Hilt 并不知道如何创建实例对象。需要在构造函数上添加 @Inject 注解。这时 Hilt 就知道如何创建需要注入的实例对象了。

class CapBean @Inject constructor()

同理如果需要注入对象的构造函数中带有参数那么也需要对所需参数的构造函数添加 @Inject 注解。

class CapBean @Inject constructor(val waterBean: WaterBean)

class WaterBean @Inject constructor()

@Module

有些情况无法通过在构造函数中添加 @Inject 注解的方式来告知 Hilt 如何提供该类或接口的实例,比如:

  • 接口。
  • 来自外部库的类。

可以通过 @Module 注解来完成。@Module 注解会生成 Hilt 模块,在模块中提供具体的实现。

@Binds

注入接口实例,需要通过 @Module + @Binds 注解的方式。

首先定义一个接口:

interface Water {
fun drink()
}</

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值