业界动态
上手指南 | Jetpack Hilt 依赖注入框架
2024-11-26 02:33

依赖注入是什么

一个类里面有一个变量,这个变量就是这个类的依赖。然后通过外部注入对这个变量进行赋值,这种就叫做依赖注入。

上手指南 | Jetpack Hilt 依赖注入框架

Hilt 是什么

​ Hilt 是 Android 的依赖注入库,其实是基于 Dagger 。可以说 Hilt 是专门为 Andorid 打造的。

​ Hilt 创建了一组标准的 组件和作用域。这些组件会自动集成到 Android 程序中的生命周期中。在使用的时候可以指定使用的范围,事情作用在对应的生命周期当中。

Hilt 常用的注解的含义

Hilt 支持最常见的 Android 类 Application、Activity、Fragment、View、Service、BroadcastReceiver 等等,但是您可能需要在Hilt 不支持的类中执行依赖注入,在这种情况下可以使用 @EntryPoint 注解进行创建,Hilt 会提供相应的依赖。

Hilt 中的组件(Compenent)

使用 @Module 注解的类,需要使用 @Installin 注解来指定 module 的范围。

例如 @InstallIn(ApplicationComponent::class) 注解的 Module 就会绑定到 Application 的生命周期上。

Hilt 提供了以下组件来绑定依赖与对应 Android 类的活动范围

Hilt 没有为 broadcast receivers 提供组件,因为 Hilt 直接进从 ApplicationComponent 中注入 broadcast receivers。

Hilt 中组件的生命周期

Hilt 会根据相应的 Android 类生命周期自动创建和销毁组件的实例,对应关系如下:

如何使用 Hilt

到这里准备工作就做完了

使用 Hilt 进行依赖注入

Hilt 在 Android 组件中的使用

Hilt 和第三方组件的使用

如果需要在项目中注入第三方依赖,可以使用 @Module 注解。使用 @Module 在注解的普通类,在其中创建第三方依赖的对象即可。

使用如下:

其中 bindSingTest 只会被调用一次,@SingLeton 相当于是一个单例

Hilt 和 ViewModel 的使用

使用之前需要在 app.build 下添加一下对 viewModel的支持

Hilt 和 Room 的使用

这里需要用到 @Module 注解,使用 @Module 注解的普通类,在其中提供 Room 的实例。并且使用 @InstallIn 来声明 作用范围。

我们给 providerUserDao 使用了 @Provides 注解 和 @Singleton 注解,是为了告诉 Hilt,当使用 UserDao 时需要执行 appDatabase.getUserDao() 。

而在调用 appDatabase.getUserDao() 时需要传入 AppDatabase,这时就会调用上面的方法 provideAppDatabase 了,因为这个方法也是用了 @Provides 注解。

并且这两个方法都是单例,只会调用一次。

使用如下:

到现在为止,就可以在任意地方获取到 UserDao,并且不用手动的创建实例。

使用 @Binds 进行接口注入

Binds:必须注释一个抽象函数,抽象函数的返回值是实现的接口。通过添加具有接口实现类型的唯一参数来指定实现。

首先需要一个接口,和一个实现类

接着就需要新建一个 Module。用来实现接口的注入

注意:这个 Module 是抽象的。

使用如下:

使用 @Qualifier 提供同一接口,不同的实现

还是上面的 User 接口,有两个不同的实现,如下:

接着定义两个注解

然后修改 Module ,在 module 中用来标记相应的依赖。

这里用了两个不同的 mdule,并且对应两个不同的 component,一个是 application,另一个是 activity

最后使用如下:

遇到的问题

在使用 @AndroidEntryPoint 注解的时候。需要在 fragment 和 actvity 都使用这个注解。

但是如果 activity 和 fragment 没在同一个module中,就会报错。

对于组件化的项目来说,这种情况就比较难受了。。。。

    以上就是本篇文章【上手指南 | Jetpack Hilt 依赖注入框架】的全部内容了,欢迎阅览 ! 文章地址:http://xiaoguoguo.dbeile.cn/news/1361.html 
     资讯      企业新闻      行情      企业黄页      同类资讯      首页      网站地图      返回首页 多贝乐移动站 http://xiaoguoguo.dbeile.cn/mobile/ , 查看更多   
最新新闻
手机热点不稳定(手机热点不稳定,总是断开)
  关于手机热点不稳定的问题  一、引言  随着移动互联网的普及,手机热点已成为我们日常生活中重要的网络接入方式之一。然
手机自动检测(手机自动检测在哪里)
  关于手机自动检测的文章  随着科技的飞速发展,智能手机已经成为我们日常生活中不可或缺的一部分。为了更好地服务用户,手
手机流量包(如何购买联通手机流量包)
  关于《手机流量包》的文章  随着移动互联网的普及,手机流量已经成为我们日常生活中不可或缺的一部分。为了满足不同用户的
手机桌面宠(手机桌面宠物软件)
  文章标题:《手机桌面宠:一种全新的数字伴侣体验》  随着科技的快速发展,智能手机已经渗透到我们日常生活的方方面面。在
怎样清理手机壳(怎样清理手机壳周围的黑)
  《怎样清理手机壳》  随着智能手机的普及,手机壳成为了保护手机不可或缺的一部分。然而,长时间使用会导致手机壳变脏或积
3000以下的手机(3000以下的手机实用耐用)
  关于《三千元以下手机》的文章  随着科技的快速发展,智能手机已经成为我们日常生活中不可或缺的一部分。如今,市场上充斥
手机换硬盘(手机换硬盘多少钱)
  关于手机换硬盘的文章  随着科技的快速发展,智能手机已成为我们日常生活中不可或缺的一部分。然而,随着使用时间的增长,
国产折叠手机(国产折叠手机性价比排名)
  国产折叠手机:革新科技与未来展望  随着科技的飞速发展,智能手机作为现代生活的必需品,不断推陈出新。近年来,国产折叠
手机当扫描仪(手机当扫描仪扫描头部数据)
  文章标题:《手机当扫描仪:科技革新下的便捷之选》  随着科技的飞速发展,智能手机的功能已经远远超越了单纯的通话和娱乐
手机怎么与电视投屏(手机怎么与电视投屏?)
  《手机怎么与电视投屏》  随着科技的飞速发展,我们的生活越来越离不开各种智能设备。其中,手机与电视作为家庭娱乐的主要