Android依赖注入与Hilt的使用

编程入门 行业动态 更新时间:2024-10-13 06:16:47

<a href=https://www.elefans.com/category/jswz/34/1771384.html style=Android依赖注入与Hilt的使用"/>

Android依赖注入与Hilt的使用

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

目录

基础知识

一、依赖注入是什么?

二.如果依赖注入这么简单,为什么需要专门开发一个框架?

三.安卓的依赖注入框架Dagger与Hilt

四.Hilt的使用

hilt相关的注解

hilt基本使用

必须配置选项

onlysampletest分支代码详解

complextest分支代码详解(更复杂一些的使用)

场景

hilt的场景实现

provider分支代码

Hilt进阶使用

multipleObjtest分支使用(同一类型提供多实现)

预定义限定符(@ApplicationContext @ActivityContext)

官方提供的类生成组件(抄官方)

组件作用域(抄官方)

组件默认绑定(抄官方)



基础知识


一、依赖注入是什么?

类通常需要引用其他类。例如,Car 类可能需要引用 Engine 类。这些必需类称为依赖项,在此示例中,Car 类依赖于拥有 Engine 类的一个实例才能运行。

类可通过以下三种方式获取所需的对象:

  1. 类构造其所需的依赖项。在以上示例中,Car 将创建并初始化自己的 Engine 实例。
  2. 从其他地方抓取。某些 Android API(如 Context getter 和 getSystemService())的工作原理便是如此。
  3. 以参数形式提供。应用可以在构造类时提供这些依赖项,或者将这些依赖项传入需要各个依赖项的函数。在以上示例中,Car 构造函数将接收 Engine 作为参数。

第三种方式就是依赖项注入!使用这种方法,您可以获取并提供类的依赖项,而不必让类实例自行获取。

下面是一个示例。在不使用依赖项注入的情况下,要表示 Car 创建自己的 Engine 依赖项,代码如下所示:

class Car {private Engine engine = new Engine();public void start() {engine.start();}
}class MyApp {public static void main(String[] args) {Car car = new Car();car.start();}
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-APaBp33c-1670170591309)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]

这段代码直接通过Car类的new方法通过申请一片内存空间创建一个新的engine对象,但是这显然不能不能满足我们要求,

首先,Car 类一旦被实例化,就会伴随着 Engine 类的实例化,也就使得 Car 类在实例化时必须知道 Engine 类的实例化需要哪些条件,在我们的例子中就是 PetrolEngine 类实例化需要的条件。

其次,对 Engine 的强依赖使得测试更加困难。Car 使用 Engine 的真实实例,因此您无法使用测试替身针对不同的测试用例修改 Engine,为了降低耦合,我们通过如下方式创建

public class

更多推荐

Android依赖注入与Hilt的使用

本文发布于:2024-03-13 07:45:29,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1733491.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:Android   Hilt

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!