码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 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();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

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

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

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

    其次,对 Engine 的强依赖使得

  • 相关阅读:
    单链表头插法和尾插法
    软件工程:帕金森定律,项目工期的那点事儿
    基于JSP的企业固定资产管理系统【数据库设计、源码、开题报告】
    docker镜像创建成功之后设置多个数据卷挂载
    力扣leetcode 850. 矩形面积 II 【困难】
    Swift 中的动态成员查找
    使用ARIMA进行时间序列预测|就代码而言
    简单了解TCP/IP四层模型
    Github 仓库代码合并 + 历史记录保留
    整理一些Windows桌面运维常用的命令,并且整合成脚本
  • 原文地址:https://blog.csdn.net/fjnu_se/article/details/128179765
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号